{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "lTR76MnbHlMF"
   },
   "source": [
    "# Llama Pack - Neo4j 查询引擎\n",
    "本 Llama Pack 创建了一个 Neo4j 知识图谱查询引擎，并执行其 `query` 函数。此包提供了为 Neo4j 知识图谱创建多种类型的查询引擎的选项，包括：\n",
    "\n",
    "* 知识图谱基于向量的实体检索（如果没有提供查询引擎类型选项，则为默认选项）\n",
    "* 知识图谱基于关键词的实体检索\n",
    "* 知识图谱混合实体检索\n",
    "* 原始向量索引检索\n",
    "* 自定义组合查询引擎（向量相似性 + 知识图谱实体检索）\n",
    "* KnowledgeGraphQueryEngine\n",
    "* KnowledgeGraphRAGRetriever\n",
    "\n",
    "对于这个笔记本，我们将加载一个关于古食饮食的维基百科页面到 Neo4j 知识图谱中，并执行查询。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 安装了必要的库\n",
    "\n",
    "- `llama_index`：将大语言模型和外部数据连接在一起的工具\n",
    "- `neo4j`：用于存储采集的数据，支持实体和属性等关系查询\n",
    "- `llama_hub`：一个社区驱动的预打包模块中心，可以使用它来启动 LLM 应用程序\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "id": "gZhtMcUkhCRn"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: llama_index in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (0.9.21)\n",
      "Requirement already satisfied: llama_hub in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (0.0.64)\n",
      "Requirement already satisfied: neo4j in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (5.15.0)\n",
      "Requirement already satisfied: SQLAlchemy>=1.4.49 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from SQLAlchemy[asyncio]>=1.4.49->llama_index) (2.0.23)\n",
      "Requirement already satisfied: aiohttp<4.0.0,>=3.8.6 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (3.9.1)\n",
      "Requirement already satisfied: beautifulsoup4<5.0.0,>=4.12.2 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (4.12.2)\n",
      "Requirement already satisfied: dataclasses-json in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (0.6.3)\n",
      "Requirement already satisfied: deprecated>=1.2.9.3 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (1.2.14)\n",
      "Requirement already satisfied: fsspec>=2023.5.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (2023.12.2)\n",
      "Requirement already satisfied: httpx in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (0.26.0)\n",
      "Requirement already satisfied: nest-asyncio<2.0.0,>=1.5.8 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (1.5.8)\n",
      "Requirement already satisfied: nltk<4.0.0,>=3.8.1 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (3.8.1)\n",
      "Requirement already satisfied: numpy in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (1.26.2)\n",
      "Requirement already satisfied: openai>=1.1.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (1.6.1)\n",
      "Requirement already satisfied: pandas in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (2.1.4)\n",
      "Requirement already satisfied: requests>=2.31.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (2.31.0)\n",
      "Requirement already satisfied: tenacity<9.0.0,>=8.2.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (8.2.3)\n",
      "Requirement already satisfied: tiktoken>=0.3.3 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (0.5.2)\n",
      "Requirement already satisfied: typing-extensions>=4.5.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (4.9.0)\n",
      "Requirement already satisfied: typing-inspect>=0.8.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_index) (0.9.0)\n",
      "Requirement already satisfied: html2text in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_hub) (2020.1.16)\n",
      "Requirement already satisfied: psutil in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_hub) (5.9.7)\n",
      "Requirement already satisfied: pyaml<24.0.0,>=23.9.7 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_hub) (23.12.0)\n",
      "Requirement already satisfied: retrying in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from llama_hub) (1.3.4)\n",
      "Requirement already satisfied: pytz in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from neo4j) (2023.3.post1)\n",
      "Requirement already satisfied: attrs>=17.3.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.6->llama_index) (23.1.0)\n",
      "Requirement already satisfied: multidict<7.0,>=4.5 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.6->llama_index) (6.0.4)\n",
      "Requirement already satisfied: yarl<2.0,>=1.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.6->llama_index) (1.9.4)\n",
      "Requirement already satisfied: frozenlist>=1.1.1 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.6->llama_index) (1.4.1)\n",
      "Requirement already satisfied: aiosignal>=1.1.2 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.6->llama_index) (1.3.1)\n",
      "Requirement already satisfied: soupsieve>1.2 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from beautifulsoup4<5.0.0,>=4.12.2->llama_index) (2.5)\n",
      "Requirement already satisfied: wrapt<2,>=1.10 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from deprecated>=1.2.9.3->llama_index) (1.16.0)\n",
      "Requirement already satisfied: click in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from nltk<4.0.0,>=3.8.1->llama_index) (8.1.7)\n",
      "Requirement already satisfied: joblib in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from nltk<4.0.0,>=3.8.1->llama_index) (1.3.2)\n",
      "Requirement already satisfied: regex>=2021.8.3 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from nltk<4.0.0,>=3.8.1->llama_index) (2023.12.25)\n",
      "Requirement already satisfied: tqdm in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from nltk<4.0.0,>=3.8.1->llama_index) (4.66.1)\n",
      "Requirement already satisfied: anyio<5,>=3.5.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from openai>=1.1.0->llama_index) (4.2.0)\n",
      "Requirement already satisfied: distro<2,>=1.7.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from openai>=1.1.0->llama_index) (1.9.0)\n",
      "Requirement already satisfied: pydantic<3,>=1.9.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from openai>=1.1.0->llama_index) (2.5.3)\n",
      "Requirement already satisfied: sniffio in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from openai>=1.1.0->llama_index) (1.3.0)\n",
      "Requirement already satisfied: certifi in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from httpx->llama_index) (2023.11.17)\n",
      "Requirement already satisfied: httpcore==1.* in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from httpx->llama_index) (1.0.2)\n",
      "Requirement already satisfied: idna in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from httpx->llama_index) (3.6)\n",
      "Requirement already satisfied: h11<0.15,>=0.13 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from httpcore==1.*->httpx->llama_index) (0.14.0)\n",
      "Requirement already satisfied: PyYAML in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from pyaml<24.0.0,>=23.9.7->llama_hub) (6.0.1)\n",
      "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from requests>=2.31.0->llama_index) (3.3.2)\n",
      "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from requests>=2.31.0->llama_index) (2.1.0)\n",
      "Requirement already satisfied: greenlet!=0.4.17 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from SQLAlchemy[asyncio]>=1.4.49->llama_index) (3.0.3)\n",
      "Requirement already satisfied: mypy-extensions>=0.3.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from typing-inspect>=0.8.0->llama_index) (1.0.0)\n",
      "Requirement already satisfied: marshmallow<4.0.0,>=3.18.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from dataclasses-json->llama_index) (3.20.1)\n",
      "Requirement already satisfied: python-dateutil>=2.8.2 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from pandas->llama_index) (2.8.2)\n",
      "Requirement already satisfied: tzdata>=2022.1 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from pandas->llama_index) (2023.3)\n",
      "Requirement already satisfied: six>=1.7.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from retrying->llama_hub) (1.16.0)\n",
      "Requirement already satisfied: packaging>=17.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from marshmallow<4.0.0,>=3.18.0->dataclasses-json->llama_index) (23.2)\n",
      "Requirement already satisfied: annotated-types>=0.4.0 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from pydantic<3,>=1.9.0->openai>=1.1.0->llama_index) (0.6.0)\n",
      "Requirement already satisfied: pydantic-core==2.14.6 in /Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages (from pydantic<3,>=1.9.0->openai>=1.1.0->llama_index) (2.14.6)\n",
      "Note: you may need to restart the kernel to use updated packages.\n"
     ]
    }
   ],
   "source": [
    "%pip install llama_index llama_hub neo4j"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 调整输出日志配置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "id": "9WMxhw2Yjpjs"
   },
   "outputs": [],
   "source": [
    "import os, logging, sys\n",
    "\n",
    "logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "y8B2WvxtNs0V"
   },
   "source": [
    "## 加载数据\n",
    "\n",
    "加载维基百科中关于古法饮食的页面。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "2xC1ThySNsAY",
    "outputId": "a96de42a-ace1-4b36-f3ab-a29d6bd921ad"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): llamahub.ai:443\n",
      "DEBUG:urllib3.connectionpool:https://llamahub.ai:443 \"POST /api/analytics/downloads HTTP/1.1\" 200 63\n",
      "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): 127.0.0.1:7890\n",
      "DEBUG:urllib3.connectionpool:http://127.0.0.1:7890 \"GET http://en.wikipedia.org/w/api.php?prop=info%7Cpageprops&inprop=url&ppprop=disambiguation&redirects=&titles=Paleolithic+diet&format=json&action=query HTTP/1.1\" 301 0\n",
      "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): en.wikipedia.org:443\n",
      "DEBUG:urllib3.connectionpool:https://en.wikipedia.org:443 \"GET /w/api.php?prop=info%7Cpageprops&inprop=url&ppprop=disambiguation&redirects=&titles=Paleolithic+diet&format=json&action=query HTTP/1.1\" 200 477\n",
      "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): 127.0.0.1:7890\n",
      "DEBUG:urllib3.connectionpool:http://127.0.0.1:7890 \"GET http://en.wikipedia.org/w/api.php?prop=extracts%7Crevisions&explaintext=&rvprop=ids&titles=Paleolithic+diet&format=json&action=query HTTP/1.1\" 301 0\n",
      "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): en.wikipedia.org:443\n",
      "DEBUG:urllib3.connectionpool:https://en.wikipedia.org:443 \"GET /w/api.php?prop=extracts%7Crevisions&explaintext=&rvprop=ids&titles=Paleolithic+diet&format=json&action=query HTTP/1.1\" 200 None\n",
      "Loaded 1 documents\n"
     ]
    }
   ],
   "source": [
    "from llama_index import download_loader\n",
    "\n",
    "WikipediaReader = download_loader(\"WikipediaReader\")\n",
    "loader = WikipediaReader()\n",
    "documents = loader.load_data(pages=['Paleolithic diet'], auto_suggest=False)\n",
    "print(f'Loaded {len(documents)} documents')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "icH9lDT7LAQH"
   },
   "source": [
    "## 下载并初始化软件包"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用 OpenAI 相关配置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# from llama_index.llama_pack import download_llama_pack\n",
    "\n",
    "# os.environ['OPENAI_API_KEY'] = \"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\"\n",
    "\n",
    "# # download and install dependencies\n",
    "# Neo4jQueryEnginePack = download_llama_pack(\n",
    "#   \"Neo4jQueryEnginePack\", \"./neo4j_pack\"\n",
    "# )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用 AuzreOpenAI 相关配置（当前项目的默认使用配置）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "id": "-SOCDPS32GM7"
   },
   "outputs": [],
   "source": [
    "\n",
    "\n",
    "\n",
    "from neo4j_pack.base import Neo4jQueryEnginePack\n",
    "# neo4j_pack.base 配置对应的 Auzre 账号\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Neo4j 安装与配置"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 安装 neo4j 服务\n",
    "```shell\n",
    "docker run -d -p 7474:7474 -p 7687:7687 --name neo4j-apoc -e NEO4J_apoc_export_file_enabled=true -e NEO4J_apoc_import_file_enabled=true -e NEO4J_apoc_import_file_use__neo4j__config=true -e NEO4J_AUTH=neo4j/pleaseletmein -e NEO4J_PLUGINS=\\[\\\"apoc\\\"\\] neo4j:latest\n",
    "```\n",
    "- username：neo4j\n",
    "- password：pleaseletmein\n",
    "- url：bolt://127.0.0.1:7687\n",
    "- database：username：neo4j"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "l1oGbRIPN3RS"
   },
   "source": [
    "### 配置 Neo4j 信息\n",
    "Neo4j 的证书存储在项目根目录下的 `credentials.json` 中，加载 json 并提取证书详细信息。\n",
    "请开 [credentials.json](./credentials.json) ，配置安装的 Neo4j 服务时的指定的账号信息\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "id": "KO0oa4GJ0_Gx"
   },
   "outputs": [],
   "source": [
    "import json\n",
    "\n",
    "# get Neo4j credentials (assume it's stored in credentials.json)\n",
    "with open('credentials.json') as f:\n",
    "  neo4j_connection_params = json.load(f)\n",
    "  username = neo4j_connection_params['username']\n",
    "  password = neo4j_connection_params['password']\n",
    "  url = neo4j_connection_params['url']\n",
    "  database = neo4j_connection_params['database']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "vTUiXf5xLRRO"
   },
   "source": [
    "以下是 `Neo4jQueryEnginePack`的构造方式。你可以从 `Neo4jQueryEngineType` 传入 `query_engine_type` 来构建 `Neo4jQueryEnginePack`。下面的代码片段展示了一个知识图谱（KG）关键词查询引擎。如果没有定义 `query_engine_type`，它默认为基于KG向量的实体检索。\n",
    "\n",
    "`Neo4jQueryEngineType` 是一个枚举类型，包含多种查询引擎类型，如下所示。你可以传入其中任何一个查询引擎类型来构建 `Neo4jQueryEnginePack`。\n",
    "\n",
    "\n",
    "```\n",
    "class Neo4jQueryEngineType(str, Enum):\n",
    "    \"\"\"Neo4j query engine type\"\"\"\n",
    "\n",
    "    KG_KEYWORD = \"keyword\"\n",
    "    KG_HYBRID = \"hybrid\"\n",
    "    RAW_VECTOR = \"vector\"\n",
    "    RAW_VECTOR_KG_COMBO = \"vector_kg\"\n",
    "    KG_QE = \"KnowledgeGraphQueryEngine\"\n",
    "    KG_RAG_RETRIEVER = \"KnowledgeGraphRAGRetriever\"\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "MldEbU3xz3Yk",
    "outputId": "062e4b27-dd9c-425c-9d32-b889d2fe55b5"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "DEBUG:neo4j:[#0000]  _: <POOL> created, direct address IPv4Address(('127.0.0.1', 7687))\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='READ', database=None\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "DEBUG:neo4j:[#0000]  _: <POOL> trying to hand out new connection\n",
      "DEBUG:neo4j:[#0000]  _: <RESOLVE> in: 127.0.0.1:7687\n",
      "DEBUG:neo4j:[#0000]  _: <RESOLVE> dns resolver out: 127.0.0.1:7687\n",
      "DEBUG:neo4j:[#0000]  C: <OPEN> 127.0.0.1:7687\n",
      "DEBUG:neo4j:[#D907]  C: <MAGIC> 0x6060B017\n",
      "DEBUG:neo4j:[#D907]  C: <HANDSHAKE> 0x00040405 0x00020404 0x00000104 0x00000003\n",
      "DEBUG:neo4j:[#D907]  S: <HANDSHAKE> 0x00000405\n",
      "DEBUG:neo4j:[#D907]  C: HELLO {'user_agent': 'neo4j-python/5.15.0 Python/3.11.6-final-0 (darwin)', 'bolt_agent': {'product': 'neo4j-python/5.15.0', 'platform': 'Darwin 23.2.0; arm64', 'language': 'Python/3.11.6-final-0', 'language_details': 'CPython; 3.11.6-final-0 (main, Oct  3 2023 10:37:07) [Clang 15.0.7 ]'}}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> client state: CONNECTED > AUTHENTICATION\n",
      "DEBUG:neo4j:[#D907]  C: LOGON {'scheme': 'basic', 'principal': 'neo4j', 'credentials': '*******'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> client state: AUTHENTICATION > READY\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'server': 'Neo4j/5.15.0', 'connection_id': 'bolt-77', 'hints': {'connection.recv_timeout_seconds': 120}}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: CONNECTED > AUTHENTICATION\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: AUTHENTICATION > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\nCALL apoc.meta.data()\\nYIELD label, other, elementType, type, property\\nWHERE NOT type = \"RELATIONSHIP\" AND elementType = \"node\"\\nWITH label AS nodeLabels, collect({property:property, type:type}) AS properties\\nRETURN {labels: nodeLabels, properties: properties} AS output\\n\\n' {} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> client state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 2, 'fields': ['output']}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'r', 't_last': 21, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\nCALL apoc.meta.data()\\nYIELD label, other, elementType, type, property\\nWHERE NOT type = \"RELATIONSHIP\" AND elementType = \"relationship\"\\nWITH label AS nodeLabels, collect({property:property, type:type}) AS properties\\nRETURN {type: nodeLabels, properties: properties} AS output\\n' {} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 0, 'fields': ['output']}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'r', 't_last': 15, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\nCALL apoc.meta.data()\\nYIELD label, other, elementType, type, property\\nWHERE type = \"RELATIONSHIP\" AND elementType = \"node\"\\nUNWIND other AS other_node\\nRETURN {start: label, type: property, end: toString(other_node)} AS output\\n' {} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': ['output']}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'r', 't_last': 4, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n                CREATE CONSTRAINT IF NOT EXISTS FOR (n:Entity) REQUIRE n.id IS UNIQUE;\\n                ' {} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 0, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 's', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: The Paleolithic diet, Paleo diet, caveman diet,...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: == Foodstuffs ==\n",
      "The basis of the diet is a re-...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: == Health effects ==\n",
      "The paleolithic diet is co...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: == Genetics ==\n",
      "The stated rationale for the pal...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: == See also ==\n",
      "\n",
      "\n",
      "== Citations ==\n",
      "\n",
      "\n",
      "== Reference...\n",
      "DEBUG:httpx:load_ssl_context verify=True cert=None trust_env=True http2=False\n",
      "DEBUG:httpx:load_verify_locations cafile='/Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages/certifi/cacert.pem'\n",
      "DEBUG:httpx:load_ssl_context verify=True cert=None trust_env=True http2=False\n",
      "DEBUG:httpx:load_verify_locations cafile='/Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages/certifi/cacert.pem'\n",
      "DEBUG:httpx:load_ssl_context verify=True cert=None trust_env=True http2=False\n",
      "DEBUG:httpx:load_verify_locations cafile='/Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages/certifi/cacert.pem'\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/deployments/gpt-35-turbo-16k/chat/completions', 'files': None, 'json_data': {'messages': [{'role': <MessageRole.USER: 'user'>, 'content': 'Some text is provided below. Given the text, extract up to 10 knowledge triplets in the form of (subject, predicate, object). Avoid stopwords.\\n---------------------\\nExample:Text: Alice is Bob\\'s mother.Triplets:\\n(Alice, is mother of, Bob)\\nText: Philz is a coffee shop founded in Berkeley in 1982.\\nTriplets:\\n(Philz, is, coffee shop)\\n(Philz, founded in, Berkeley)\\n(Philz, founded in, 1982)\\n---------------------\\nText: The Paleolithic diet, Paleo diet, caveman diet, or stone-age diet is a modern fad diet consisting of foods thought by its proponents to mirror those eaten by humans during the Paleolithic era.The diet avoids food processing and typically includes vegetables, fruits, nuts, roots, and meat and excludes dairy products, grains, sugar, legumes, processed oils, salt, alcohol, and coffee. Historians can trace the ideas behind the diet to \"primitive\" diets advocated in 19th century. In the 1970s, Walter L. Voegtlin popularized a meat-centric \"Stone Age\" diet; in the 21st century the best-selling books of Loren Cordain popularized the Paleo diet. As of 2019 the paleo-diet industry was worth approximately US$500 million.In the 21st century, the sequencing of the human genome and DNA analysis of the remains of early humans have found evidence that humans evolved rapidly in response to changing diet. This evidence undermines a core premise of the paleolithic diet – that human digestion has remained essentially unchanged over time. Anthropological science has found that human diets in paleolithic times were more varied and less meat-centric than had previously been assumed.\\nAdvocates promote the paleolithic diet as a way of improving health. There is some evidence that following it may lead to improvements in body composition and metabolism compared with the typical Western diet or compared with diets recommended by some European nutritional guidelines. On the other hand, following the diet can lead to nutritional deficiencies such as an inadequate calcium intake, and side effects can include weakness, diarrhea, and headaches.\\n\\n\\n== History and terminology ==\\nAdrienne Rose Johnson writes that the idea that the primitive diet was superior to current dietary habits dates back to the 1890s with such writers as Emmet Densmore and John Harvey Kellogg. Densmore proclaimed that \"bread is the staff of death\", while Kellogg supported a diet of starchy and grain-based foods in accord with \"the ways and likings of our primitive ancestors\". Arnold DeVries advocated an early version of the Paleolithic diet in his 1952 book, Primitive Man and His Food. In 1958, Richard Mackarness authored Eat Fat and Grow Slim, which proposed a low-carbohydrate \"Stone Age\" diet.In his 1975 book The Stone Age Diet, gastroenterologist Walter L. Voegtlin advocated a meat-based diet, with low proportions of vegetables and starchy foods, based on his declaration that humans were \"exclusively flesh-eaters\" until 10,000 years ago.In 1985 Stanley Boyd Eaton and Melvin Konner published a controversial article in the New England Journal of Medicine proposing that modern humans were biologically very similar to their primitive ancestors and so \"genetically programmed\" to consume pre-agricultural foods. Eaton and Konner proposed a \"discordance hypothesis\" by which the mismatch between modern diet and human biology gave rise to lifestyle diseases, such as obesity and diabetes.The diet started to become popular in the 21st century, where it attracted a largely internet-based following using web sites, forums and social media.This diet\\'s ideas were further popularized by Loren Cordain, a health scientist with a Ph.D. in physical education, who trademarked the words \"The Paleo Diet\" and who wrote a 2002 book of that title.In 2012 the paleolithic diet was described as being one of the \"latest trends\" in diets, based on the popularity of diet books about it; in 2013 and 2014 the Paleolithic diet was Google\\'s most searched weight-loss method.The paleolithic or paleo diet is also sometimes referred to as the caveman or stone-age diet.\\nTriplets:\\n'}], 'model': 'gpt-35-turbo-16k', 'stream': False, 'temperature': 0.1}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.connection:connect_tcp.started host='127.0.0.1' port=7890 local_address=None timeout=60.0 socket_options=None\n",
      "DEBUG:httpcore.connection:connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x14d08e310>\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'CONNECT']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'CONNECT']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'CONNECT']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'Connection established', [])\n",
      "DEBUG:httpcore.proxy:start_tls.started ssl_context=<ssl.SSLContext object at 0x14c78fad0> server_hostname='firstaiproject.openai.azure.com' timeout=60.0\n",
      "DEBUG:httpcore.proxy:start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x14d077f90>\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Cache-Control', b'no-cache, must-revalidate'), (b'Content-Length', b'1375'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'apim-request-id', b'53b6fd09-dc8d-455e-8528-e9f9dbeeb126'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'x-content-type-options', b'nosniff'), (b'x-ms-region', b'East US'), (b'x-ratelimit-remaining-requests', b'119'), (b'x-ratelimit-remaining-tokens', b'119984'), (b'x-accel-buffering', b'no'), (b'x-request-id', b'1e890a84-6b9c-4fbe-a213-722abeef9fa3'), (b'x-ms-client-request-id', b'53b6fd09-dc8d-455e-8528-e9f9dbeeb126'), (b'azureml-model-session', b'turbo-0613-bc549a28'), (b'Date', b'Thu, 28 Dec 2023 09:03:51 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:llama_index.indices.knowledge_graph.base:> Extracted triplets: [('Paleolithic diet', 'is', 'fad diet'), ('Walter L. Voegtlin', 'popularized', 'meat-centric \"Stone Age\" diet'), ('Loren Cordain', 'popularized', 'Paleo diet'), ('paleo-diet industry', 'worth', 'approximately US$500 million'), ('paleolithic diet', 'promotes', 'improving health'), ('paleolithic diet', 'can lead to', 'nutritional deficiencies')]\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS`]->(n2)\\n        ' {'subj': 'Paleolithic diet', 'obj': 'fad diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 5, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`POPULARIZED`]->(n2)\\n        ' {'subj': 'Walter L. Voegtlin', 'obj': 'meat-centric \"Stone Age\" diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`POPULARIZED`]->(n2)\\n        ' {'subj': 'Loren Cordain', 'obj': 'Paleo diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 3, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`WORTH`]->(n2)\\n        ' {'subj': 'paleo-diet industry', 'obj': 'approximately US$500 million'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`PROMOTES`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'improving health'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`CAN_LEAD_TO`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'nutritional deficiencies'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:httpx:load_ssl_context verify=True cert=None trust_env=True http2=False\n",
      "DEBUG:httpx:load_verify_locations cafile='/Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages/certifi/cacert.pem'\n",
      "DEBUG:httpx:load_ssl_context verify=True cert=None trust_env=True http2=False\n",
      "DEBUG:httpx:load_verify_locations cafile='/Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages/certifi/cacert.pem'\n",
      "DEBUG:httpx:load_ssl_context verify=True cert=None trust_env=True http2=False\n",
      "DEBUG:httpx:load_verify_locations cafile='/Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages/certifi/cacert.pem'\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/embeddings', 'files': None, 'post_parser': <function Embeddings.create.<locals>.parser at 0x14d0bf2e0>, 'json_data': {'input': [\"('Paleolithic diet', 'is', 'fad diet')\", '(\\'Walter L. Voegtlin\\', \\'popularized\\', \\'meat-centric \"Stone Age\" diet\\')', \"('Loren Cordain', 'popularized', 'Paleo diet')\", \"('paleo-diet industry', 'worth', 'approximately US$500 million')\", \"('paleolithic diet', 'promotes', 'improving health')\", \"('paleolithic diet', 'can lead to', 'nutritional deficiencies')\"], 'model': <OpenAIEmbeddingModeModel.TEXT_EMBED_ADA_002: 'text-embedding-ada-002'>, 'encoding_format': 'base64'}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.connection:connect_tcp.started host='127.0.0.1' port=7890 local_address=None timeout=5.0 socket_options=None\n",
      "DEBUG:httpcore.connection:connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x14d03a3d0>\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'CONNECT']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'CONNECT']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'CONNECT']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'Connection established', [])\n",
      "DEBUG:httpcore.proxy:start_tls.started ssl_context=<ssl.SSLContext object at 0x14d1f4050> server_hostname='firstaiproject.openai.azure.com' timeout=5.0\n",
      "DEBUG:httpcore.proxy:start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x14d0b3350>\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Length', b'49769'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'x-content-type-options', b'nosniff'), (b'x-ratelimit-remaining-requests', b'119'), (b'apim-request-id', b'c94d0b8b-ac10-4c07-82b1-fefc026b02bf'), (b'x-ratelimit-remaining-tokens', b'119915'), (b'x-request-id', b'f6f35c01-9cc1-474d-820d-281260d10faf'), (b'x-ms-client-request-id', b'c94d0b8b-ac10-4c07-82b1-fefc026b02bf'), (b'x-ms-region', b'East US'), (b'azureml-model-session', b'wd3a5f6e70955-5'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Date', b'Thu, 28 Dec 2023 09:03:52 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/deployments/gpt-35-turbo-16k/chat/completions', 'files': None, 'json_data': {'messages': [{'role': <MessageRole.USER: 'user'>, 'content': 'Some text is provided below. Given the text, extract up to 10 knowledge triplets in the form of (subject, predicate, object). Avoid stopwords.\\n---------------------\\nExample:Text: Alice is Bob\\'s mother.Triplets:\\n(Alice, is mother of, Bob)\\nText: Philz is a coffee shop founded in Berkeley in 1982.\\nTriplets:\\n(Philz, is, coffee shop)\\n(Philz, founded in, Berkeley)\\n(Philz, founded in, 1982)\\n---------------------\\nText: == Foodstuffs ==\\nThe basis of the diet is a re-imagining of what Paleolithic people ate, and different proponents recommend different diet compositions. Eaton and Konner, for example, wrote a 1988 book The Paleolithic Prescription with Marjorie Shostak, and it described a diet that is 65% plant-based. This is not typical of more recently devised paleo diets; Loren Cordain\\'s – probably the most popular – instead emphasizes animal products and avoidance of processed food. Diet advocates concede the modern paleolithic diet cannot be a faithful recreation of what paleolithic people ate, and instead aim to \"translate\" that into a modern context, avoiding such likely historical practices as cannibalism.Foodstuffs that have been described as permissible include:\\n\\n\"vegetables, fruits, nuts, roots, meat, and organ meats\";\\n\"vegetables (including root vegetables), fruit (including fruit oils, e.g., olive oil, coconut oil, and palm oil), nuts, fish, meat, and eggs, and it excluded dairy, grain-based foods, legumes, extra sugar, and nutritional products of industry (including refined fats and refined carbohydrates)\"; and\\n\"avoids processed foods, and emphasizes eating vegetables, fruits, nuts and seeds, eggs, and lean meats\".The diet forbids the consumption of all dairy products. This is because milking did not exist until animals were domesticated after the Paleolithic era.\\n\\n\\n=== Ancestral diet ===\\n\\nAdopting the Paleolithic diet assumes that modern humans can reproduce the hunter-gatherer diet. Molecular biologist Marion Nestle argues that \"knowledge of the relative proportions of animal and plant foods in the diets of early humans is circumstantial, incomplete, and debatable and that there are insufficient data to identify the composition of a genetically determined optimal diet. The evidence related to Paleolithic diets is best interpreted as supporting the idea that diets based largely on plant foods promote health and longevity, at least under conditions of food abundance and physical activity.\" Ideas about Paleolithic diet and nutrition are at best hypothetical.The data for Cordain\\'s book only came from six contemporary hunter-gatherer groups, mainly living in marginal habitats. One of the studies was on the !Kung, whose diet was recorded for a single month, and one was on the Inuit. Due to these limitations, the book has been criticized as painting an incomplete picture of the diets of Paleolithic humans. It has been noted that the rationale for the diet does not adequately account for the fact that, due to the pressures of artificial selection, most modern domesticated plants and animals differ drastically from their Paleolithic ancestors; likewise, their nutritional profiles are very different from their ancient counterparts. For example, wild almonds produce potentially fatal levels of cyanide, but this trait has been bred out of domesticated varieties using artificial selection. Many vegetables, such as broccoli, did not exist in the Paleolithic period; broccoli, cabbage, cauliflower, and kale are modern cultivars of the ancient species Brassica oleracea.Trying to devise an ideal diet by studying contemporary hunter-gatherers is difficult because of the great disparities that exist; for example, the animal-derived calorie percentage ranges from 25% for the Gwi people of southern Africa to 99% for the Alaskan Nunamiut. Descendants of populations with different diets have different genetic adaptations to those diets, such as the ability to digest sugars from starchy foods. Modern hunter-gatherers tend to exercise considerably more than modern office workers, protecting them from heart disease and diabetes, though highly processed modern foods also contribute to diabetes when those populations move into cities.A 2018 review of the diet of hunter-gatherer populations found that the dietary provisions of the paleolithic diet had been based on questionable research, and were \"difficult to reconcile with more detailed ethnographic and nutritional studies of hunter-gatherer diet\".Researchers have proposed that cooked starches met the energy demands of an increasing brain size, based on variations in the copy number of genes encoding amylase.\\nTriplets:\\n'}], 'model': 'gpt-35-turbo-16k', 'stream': False, 'temperature': 0.1}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Cache-Control', b'no-cache, must-revalidate'), (b'Content-Length', b'1216'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'apim-request-id', b'1c567aa7-820a-4e0f-8cc0-eea7e41e1cc0'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'x-content-type-options', b'nosniff'), (b'x-ms-region', b'East US'), (b'x-ratelimit-remaining-requests', b'119'), (b'x-ratelimit-remaining-tokens', b'119968'), (b'x-accel-buffering', b'no'), (b'x-request-id', b'f2a30e49-95e1-4069-ab19-d27172d982fc'), (b'x-ms-client-request-id', b'1c567aa7-820a-4e0f-8cc0-eea7e41e1cc0'), (b'azureml-model-session', b'turbo-0613-65c7dc11'), (b'Date', b'Thu, 28 Dec 2023 09:03:54 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:llama_index.indices.knowledge_graph.base:> Extracted triplets: [('Foodstuffs', 'is', 'basis of diet'), ('diet', 'is', 're-imagining of what Paleolithic people ate'), ('proponents', 'recommend', 'different diet compositions'), ('Eaton and Konner', 'wrote', 'The Paleolithic Prescription'), ('book', 'described', 'diet'), ('diet', 'is', '65% plant-based'), ('paleo diets', 'emphasizes', 'animal products'), ('paleo diets', 'avoidance of', 'processed food'), ('diet advocates', 'aim to', '\"translate\" into modern context'), ('diet', 'forbids', 'consumption of all dairy products')]\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS`]->(n2)\\n        ' {'subj': 'Foodstuffs', 'obj': 'basis of diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS`]->(n2)\\n        ' {'subj': 'diet', 'obj': 're-imagining of what Paleolithic people ate'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 16, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`RECOMMEND`]->(n2)\\n        ' {'subj': 'proponents', 'obj': 'different diet compositions'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`WROTE`]->(n2)\\n        ' {'subj': 'Eaton and Konner', 'obj': 'The Paleolithic Prescription'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`DESCRIBED`]->(n2)\\n        ' {'subj': 'book', 'obj': 'diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS`]->(n2)\\n        ' {'subj': 'diet', 'obj': '65% plant-based'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 0, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`EMPHASIZES`]->(n2)\\n        ' {'subj': 'paleo diets', 'obj': 'animal products'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`AVOIDANCE_OF`]->(n2)\\n        ' {'subj': 'paleo diets', 'obj': 'processed food'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`AIM_TO`]->(n2)\\n        ' {'subj': 'diet advocates', 'obj': '\"translate\" into modern context'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`FORBIDS`]->(n2)\\n        ' {'subj': 'diet', 'obj': 'consumption of all dairy products'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/embeddings', 'files': None, 'post_parser': <function Embeddings.create.<locals>.parser at 0x14d5e8fe0>, 'json_data': {'input': [\"('Foodstuffs', 'is', 'basis of diet')\", \"('diet', 'is', 're-imagining of what Paleolithic people ate')\", \"('proponents', 'recommend', 'different diet compositions')\", \"('Eaton and Konner', 'wrote', 'The Paleolithic Prescription')\", \"('book', 'described', 'diet')\", \"('diet', 'is', '65% plant-based')\", \"('paleo diets', 'emphasizes', 'animal products')\", \"('paleo diets', 'avoidance of', 'processed food')\", '(\\'diet advocates\\', \\'aim to\\', \\'\"translate\" into modern context\\')', \"('diet', 'forbids', 'consumption of all dairy products')\"], 'model': <OpenAIEmbeddingModeModel.TEXT_EMBED_ADA_002: 'text-embedding-ada-002'>, 'encoding_format': 'base64'}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Length', b'82865'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'x-content-type-options', b'nosniff'), (b'x-ratelimit-remaining-requests', b'118'), (b'apim-request-id', b'bb1f5cb2-50c4-41fc-b6f8-ae40efbd8c72'), (b'x-ratelimit-remaining-tokens', b'119786'), (b'x-request-id', b'8f334b88-8bd8-4750-92f4-1fd3a2487e83'), (b'x-ms-client-request-id', b'bb1f5cb2-50c4-41fc-b6f8-ae40efbd8c72'), (b'x-ms-region', b'East US'), (b'azureml-model-session', b'wd3a5f6e70955-5'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Date', b'Thu, 28 Dec 2023 09:03:54 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/deployments/gpt-35-turbo-16k/chat/completions', 'files': None, 'json_data': {'messages': [{'role': <MessageRole.USER: 'user'>, 'content': 'Some text is provided below. Given the text, extract up to 10 knowledge triplets in the form of (subject, predicate, object). Avoid stopwords.\\n---------------------\\nExample:Text: Alice is Bob\\'s mother.Triplets:\\n(Alice, is mother of, Bob)\\nText: Philz is a coffee shop founded in Berkeley in 1982.\\nTriplets:\\n(Philz, is, coffee shop)\\n(Philz, founded in, Berkeley)\\n(Philz, founded in, 1982)\\n---------------------\\nText: == Health effects ==\\nThe paleolithic diet is controversial in part because of the exaggerated health claims made for it by its supporters. In general, methodological quality of research into the diet has been poor to moderate.The aspects of the paleolithic diet that result in eating fewer processed foods and less sugar and salt are consistent with mainstream advice about diet. Diets with a paleolithic nutrition pattern have some similarities to traditional ethnic diets such as the Mediterranean diet that have been found to be healthier than the Western diet. Following the paleolithic diet, however, can lead to nutritional deficiencies such as those of vitamin D and calcium, which in turn could lead to compromised bone health; it can also lead to an increased risk of ingesting toxins from high fish consumption.There is some evidence the diet helps achieve weight loss, possibly because of the increased satiety from the foods typically eaten. One trial of obese postmenopausal women found improvements in weight and fat loss after six months, but the benefits had ceased by 24 months; side effects among participants included \"weakness, diarrhea, and headaches\". As with any other diet regime, the paleolithic diet leads to weight loss because of overall decreased caloric intake, rather than a special feature of the diet itself.There is no good evidence that following a paleolithic diet lessens the risk of cardiovascular disease or metabolic syndrome. There is no evidence the paleolithic diet is effective in treating inflammatory bowel disease.The paleolithic diet similar to the Atkins diet encourages the consumption of large amounts of red meat, especially meats high in saturated fat. This has a negative effect on health in the long run as medical studies have shown that it can lead to increased incidence of cardiovascular disease.\\nTriplets:\\n'}], 'model': 'gpt-35-turbo-16k', 'stream': False, 'temperature': 0.1}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Cache-Control', b'no-cache, must-revalidate'), (b'Content-Length', b'1317'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'apim-request-id', b'3fa67f8d-474c-458c-ab6d-805c6dbd1f38'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'x-content-type-options', b'nosniff'), (b'x-ms-region', b'East US'), (b'x-ratelimit-remaining-requests', b'118'), (b'x-ratelimit-remaining-tokens', b'119952'), (b'x-accel-buffering', b'no'), (b'x-request-id', b'eedbc373-ae13-498a-914a-8401063c40e8'), (b'x-ms-client-request-id', b'3fa67f8d-474c-458c-ab6d-805c6dbd1f38'), (b'azureml-model-session', b'turbo-0613-2c7a9069'), (b'Date', b'Thu, 28 Dec 2023 09:03:57 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:llama_index.indices.knowledge_graph.base:> Extracted triplets: [('paleolithic diet', 'is controversial in', 'part'), ('paleolithic diet', 'result in', 'eating fewer processed foods'), ('paleolithic diet', 'result in', 'eating less sugar'), ('paleolithic diet', 'result in', 'eating less salt'), ('paleolithic diet', 'have similarities to', 'Mediterranean diet'), ('paleolithic diet', 'have similarities to', 'traditional ethnic diets'), ('paleolithic diet', 'lead to', 'nutritional deficiencies'), ('paleolithic diet', 'lead to', 'compromised bone health'), ('paleolithic diet', 'lead to', 'increased risk of ingesting toxins'), ('paleolithic diet', 'helps achieve', 'weight loss')]\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS_CONTROVERSIAL_IN`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'part'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`RESULT_IN`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'eating fewer processed foods'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`RESULT_IN`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'eating less sugar'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`RESULT_IN`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'eating less salt'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAVE_SIMILARITIES_TO`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'Mediterranean diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAVE_SIMILARITIES_TO`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'traditional ethnic diets'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`LEAD_TO`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'nutritional deficiencies'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`LEAD_TO`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'compromised bone health'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`LEAD_TO`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'increased risk of ingesting toxins'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HELPS_ACHIEVE`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'weight loss'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/embeddings', 'files': None, 'post_parser': <function Embeddings.create.<locals>.parser at 0x14d5e9580>, 'json_data': {'input': [\"('paleolithic diet', 'is controversial in', 'part')\", \"('paleolithic diet', 'result in', 'eating fewer processed foods')\", \"('paleolithic diet', 'result in', 'eating less sugar')\", \"('paleolithic diet', 'result in', 'eating less salt')\", \"('paleolithic diet', 'have similarities to', 'Mediterranean diet')\", \"('paleolithic diet', 'have similarities to', 'traditional ethnic diets')\", \"('paleolithic diet', 'lead to', 'nutritional deficiencies')\", \"('paleolithic diet', 'lead to', 'compromised bone health')\", \"('paleolithic diet', 'lead to', 'increased risk of ingesting toxins')\", \"('paleolithic diet', 'helps achieve', 'weight loss')\"], 'model': <OpenAIEmbeddingModeModel.TEXT_EMBED_ADA_002: 'text-embedding-ada-002'>, 'encoding_format': 'base64'}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Length', b'82865'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'x-content-type-options', b'nosniff'), (b'x-ratelimit-remaining-requests', b'117'), (b'apim-request-id', b'0ebcce0a-3e75-41cb-a67d-15898189755b'), (b'x-ratelimit-remaining-tokens', b'119632'), (b'x-request-id', b'ad10dcc2-545a-4af3-9617-78cb2d1e7881'), (b'x-ms-client-request-id', b'0ebcce0a-3e75-41cb-a67d-15898189755b'), (b'x-ms-region', b'East US'), (b'azureml-model-session', b'wd3a5f6e70955-4'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Date', b'Thu, 28 Dec 2023 09:03:56 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/deployments/gpt-35-turbo-16k/chat/completions', 'files': None, 'json_data': {'messages': [{'role': <MessageRole.USER: 'user'>, 'content': 'Some text is provided below. Given the text, extract up to 10 knowledge triplets in the form of (subject, predicate, object). Avoid stopwords.\\n---------------------\\nExample:Text: Alice is Bob\\'s mother.Triplets:\\n(Alice, is mother of, Bob)\\nText: Philz is a coffee shop founded in Berkeley in 1982.\\nTriplets:\\n(Philz, is, coffee shop)\\n(Philz, founded in, Berkeley)\\n(Philz, founded in, 1982)\\n---------------------\\nText: == Genetics ==\\nThe stated rationale for the paleolithic diet is that human genes of modern times are unchanged from those of 10,000 years ago, and that the diet of that time is therefore the best fit with humans today. Loren Cordain has described the paleo diet as \"the one and only diet that ideally fits our genetic makeup\".The argument is that modern humans have not been able to adapt to the new circumstances. According to Cordain, before the agricultural revolution, hunter-gatherer diets rarely included grains, and obtaining milk from wild animals would have been \"nearly impossible\". Advocates of the diet argue that the increase in diseases of affluence after the dawn of agriculture was caused by these changes in diet, but others have countered that it may be that pre-agricultural hunter-gatherers did not suffer from the diseases of affluence because they did not live long enough to develop them.According to the model from the evolutionary discordance hypothesis, \"many chronic diseases and degenerative conditions evident in modern Western populations have arisen because of a mismatch between Stone Age genes and modern lifestyles.\" Advocates of the modern paleo diet have formed their dietary recommendations based on this hypothesis. They argue that modern humans should follow a diet that is nutritionally closer to that of their Paleolithic ancestors.\\nThe evolutionary discordance is incomplete, since it is based mainly on the genetic understanding of the human diet and a unique model of human ancestral diets, without taking into account the flexibility and variability of the human dietary behaviors over time. Studies of a variety of populations around the world show that humans can live healthily with a wide variety of diets and that humans have evolved to be flexible eaters. Lactase persistence, which confers lactose tolerance into adulthood, is an example of how some humans have adapted to the introduction of dairy into their diet. While the introduction of grains, dairy, and legumes during the Neolithic revolution may have had some adverse effects on modern humans, if humans had not been nutritionally adaptable, these technological developments would have been dropped.Since the publication of Eaton and Konner\\'s paper in 1985, analysis of the DNA of primitive human remains has provided evidence that evolving humans were continually adapting to new diets, thus challenging the hypothesis underlying the paleothic diet. Evolutionary biologist Marlene Zuk writes that the idea that our genetic makeup today matches that of our ancestors is misconceived, and that in debate Cordain was \"taken aback\" when told that 10,000 years was \"plenty of time\" for an evolutionary change in human digestive abilities to have taken place. On this basis Zuk dismisses Cordain\\'s claim that the paleo diet is \"the one and only diet that fits our genetic makeup\".Paleoanthropologist Peter Ungar has written that the paleo diet is a \"myth\", on account both of its invocation of a single suitable diet when in reality humans have always been a \"work in progress\", and because diet has always been varied because humans were spread widely over the planet.Anthropological geneticist Anne C. Stone has said that humans have adapted in the last 10,000 years in response to radical changes in diet. In 2016, she was quoted as saying \"It drives me crazy when Paleo-diet people say that we\\'ve stopped evolving—we haven\\'t\".Melvin Konner has said the challenge to the hypothesis is not greatly significant since the real challenges to human non-adaptation have occurred with the rise of ever-more refined foodstuffs in the last 300 years.\\n\\n\\n== Environmental impact ==\\nA 2019 analysis of diets in the United States ranked consumption of a paleolithic diet as more environmentally harmful than consumption of an omnivorous diet, though not so harmful as a ketogenic diet.Elizabeth Kolbert has written the paleolithic diet\\'s emphasis on meat consumption is a \"disaster\" on account of meat\\'s comparatively high energy production costs.\\n\\n\\n== Popularity ==\\nA lifestyle and ideology have developed around the diet. \"Paleolithic\" products include clothing, smartphone apps, and cookware. Many paleolithic cookery books have been bestsellers.As of 2019 the market for products with the word \"Paleo\" in their name was worth approximately $US500\\u2009million, with strong growth prospects despite pushback from the scientific community. Some products were taking advantage of the trend by touting themselves as \"paleo-approved\" despite having no apparent link to the movement\\'s tenets.Like many other diets, the paleolithic diet is promoted by some by an appeal to nature and a narrative of conspiracy theories about how nutritional research, which does not support the supposed benefits of the paleolithic diet, is controlled by a malign food industry. Paleolithic diet advocate John Durant has blamed suppression of the truth about diet in the United States on \"the vegetarian lobby\".\\n\\n\\n== See also ==\\n\\n\\n== Citations ==\\n\\n\\n== References ==\\n\\n\\n== Further reading ==\\nTriplets:\\n'}], 'model': 'gpt-35-turbo-16k', 'stream': False, 'temperature': 0.1}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Cache-Control', b'no-cache, must-revalidate'), (b'Content-Length', b'3245'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'apim-request-id', b'2ce2a2e5-fc34-42a3-bc15-c604f25c7f4b'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'x-content-type-options', b'nosniff'), (b'x-ms-region', b'East US'), (b'x-ratelimit-remaining-requests', b'117'), (b'x-ratelimit-remaining-tokens', b'119936'), (b'x-accel-buffering', b'no'), (b'x-request-id', b'412301e3-d3cd-4c32-9bc3-45177541dbd2'), (b'x-ms-client-request-id', b'2ce2a2e5-fc34-42a3-bc15-c604f25c7f4b'), (b'azureml-model-session', b'turbo-0613-ff6e20ab'), (b'Date', b'Thu, 28 Dec 2023 09:04:03 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:llama_index.indices.knowledge_graph.base:> Extracted triplets: [('Genetics', 'is', 'rationale'), ('paleolithic diet', 'is', 'best fit'), ('Loren Cordain', 'described as', 'paleo diet'), ('modern humans', 'have not been able to adapt to', 'new circumstances'), ('Cordain', 'argue', 'increase in diseases of affluence'), ('hunter-gatherer diets', 'rarely included', 'grains'), ('obtaining milk', 'would have been', 'nearly impossible'), ('diseases of affluence', 'caused by', 'changes in diet'), ('pre-agricultural hunter-gatherers', 'did not suffer from', 'diseases of affluence'), ('evolutionary discordance hypothesis', 'many chronic diseases and degenerative conditions evident in modern Western populations have arisen because of', 'mismatch between Stone Age genes and modern lifestyles'), ('modern paleo diet', 'formed their dietary recommendations based on', 'evolutionary discordance hypothesis'), ('humans', 'can live healthily with', 'variety of diets'), ('humans', 'have evolved to be', 'flexible eaters'), ('Lactase persistence', 'confers lactose tolerance into', 'adulthood'), ('humans', 'have not been', 'nutritionally adaptable'), ('technological developments', 'would have been', 'dropped'), (\"Eaton and Konner's paper\", 'provided evidence that evolving humans were continually adapting to', 'new diets'), ('Marlene Zuk', 'dismisses', \"Cordain's claim\"), ('Peter Ungar', 'has written that the paleo diet is', 'myth'), ('humans', 'have always been', 'work in progress'), ('diet', 'has always been', 'varied'), ('environmental impact', 'ranked consumption of a paleolithic diet as', 'more environmentally harmful than consumption of an omnivorous diet'), ('Elizabeth Kolbert', \"has written the paleolithic diet's emphasis on meat consumption is\", 'disaster'), ('lifestyle and ideology', 'have developed around', 'diet'), ('scientific community', 'pushback from', 'paleolithic diet'), ('nutritional research', 'does not support', 'supposed benefits of the paleolithic diet'), ('paleolithic diet advocate John Durant', 'has blamed suppression of the truth about diet in the United States on', '\"the vegetarian lobby\"')]\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS`]->(n2)\\n        ' {'subj': 'Genetics', 'obj': 'rationale'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 4, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'best fit'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`DESCRIBED_AS`]->(n2)\\n        ' {'subj': 'Loren Cordain', 'obj': 'paleo diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAVE_NOT_BEEN_ABLE_TO_ADAPT_TO`]->(n2)\\n        ' {'subj': 'modern humans', 'obj': 'new circumstances'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`ARGUE`]->(n2)\\n        ' {'subj': 'Cordain', 'obj': 'increase in diseases of affluence'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`RARELY_INCLUDED`]->(n2)\\n        ' {'subj': 'hunter-gatherer diets', 'obj': 'grains'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`WOULD_HAVE_BEEN`]->(n2)\\n        ' {'subj': 'obtaining milk', 'obj': 'nearly impossible'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 23, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`CAUSED_BY`]->(n2)\\n        ' {'subj': 'diseases of affluence', 'obj': 'changes in diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`DID_NOT_SUFFER_FROM`]->(n2)\\n        ' {'subj': 'pre-agricultural hunter-gatherers', 'obj': 'diseases of affluence'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`MANY_CHRONIC_DISEASES_AND_DEGENERATIVE_CONDITIONS_EVIDENT_IN_MODERN_WESTERN_POPULATIONS_HAVE_ARISEN_BECAUSE_OF`]->(n2)\\n        ' {'subj': 'evolutionary discordance hypothesis', 'obj': 'mismatch between Stone Age genes and modern lifestyles'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`FORMED_THEIR_DIETARY_RECOMMENDATIONS_BASED_ON`]->(n2)\\n        ' {'subj': 'modern paleo diet', 'obj': 'evolutionary discordance hypothesis'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`CAN_LIVE_HEALTHILY_WITH`]->(n2)\\n        ' {'subj': 'humans', 'obj': 'variety of diets'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAyZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAVE_EVOLVED_TO_BE`]->(n2)\\n        ' {'subj': 'humans', 'obj': 'flexible eaters'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 19, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAy5A=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`CONFERS_LACTOSE_TOLERANCE_INTO`]->(n2)\\n        ' {'subj': 'Lactase persistence', 'obj': 'adulthood'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAzJA=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAVE_NOT_BEEN`]->(n2)\\n        ' {'subj': 'humans', 'obj': 'nutritionally adaptable'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 13, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAzpA=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`WOULD_HAVE_BEEN`]->(n2)\\n        ' {'subj': 'technological developments', 'obj': 'dropped'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 13, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skAz5A=', 'stats': {'contains-updates': True, 'labels-added': 2, 'relationships-created': 1, 'nodes-created': 2, 'properties-set': 2}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`PROVIDED_EVIDENCE_THAT_EVOLVING_HUMANS_WERE_CONTINUALLY_ADAPTING_TO`]->(n2)\\n        ' {'subj': \"Eaton and Konner's paper\", 'obj': 'new diets'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 14, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA0ZA=', 'stats': {'contains-updates': True, 'labels-added': 2, 'relationships-created': 1, 'nodes-created': 2, 'properties-set': 2}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`DISMISSES`]->(n2)\\n        ' {'subj': 'Marlene Zuk', 'obj': \"Cordain's claim\"} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 13, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA05A=', 'stats': {'contains-updates': True, 'labels-added': 2, 'relationships-created': 1, 'nodes-created': 2, 'properties-set': 2}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAS_WRITTEN_THAT_THE_PALEO_DIET_IS`]->(n2)\\n        ' {'subj': 'Peter Ungar', 'obj': 'myth'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 16, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA1ZA=', 'stats': {'contains-updates': True, 'labels-added': 2, 'relationships-created': 1, 'nodes-created': 2, 'properties-set': 2}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAVE_ALWAYS_BEEN`]->(n2)\\n        ' {'subj': 'humans', 'obj': 'work in progress'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 15, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA15A=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAS_ALWAYS_BEEN`]->(n2)\\n        ' {'subj': 'diet', 'obj': 'varied'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 16, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA2ZA=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`RANKED_CONSUMPTION_OF_A_PALEOLITHIC_DIET_AS`]->(n2)\\n        ' {'subj': 'environmental impact', 'obj': 'more environmentally harmful than consumption of an omnivorous diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 15, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA25A=', 'stats': {'contains-updates': True, 'labels-added': 2, 'relationships-created': 1, 'nodes-created': 2, 'properties-set': 2}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN \"\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAS_WRITTEN_THE_PALEOLITHIC_DIET'S_EMPHASIS_ON_MEAT_CONSUMPTION_IS`]->(n2)\\n        \" {'subj': 'Elizabeth Kolbert', 'obj': 'disaster'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 14, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA3ZA=', 'stats': {'contains-updates': True, 'labels-added': 2, 'relationships-created': 1, 'nodes-created': 2, 'properties-set': 2}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAVE_DEVELOPED_AROUND`]->(n2)\\n        ' {'subj': 'lifestyle and ideology', 'obj': 'diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 13, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA35A=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`PUSHBACK_FROM`]->(n2)\\n        ' {'subj': 'scientific community', 'obj': 'paleolithic diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 14, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA4ZA=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`DOES_NOT_SUPPORT`]->(n2)\\n        ' {'subj': 'nutritional research', 'obj': 'supposed benefits of the paleolithic diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 14, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA45A=', 'stats': {'contains-updates': True, 'labels-added': 2, 'relationships-created': 1, 'nodes-created': 2, 'properties-set': 2}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAS_BLAMED_SUPPRESSION_OF_THE_TRUTH_ABOUT_DIET_IN_THE_UNITED_STATES_ON`]->(n2)\\n        ' {'subj': 'paleolithic diet advocate John Durant', 'obj': '\"the vegetarian lobby\"'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 21, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'stats': {'contains-updates': True, 'labels-added': 2, 'relationships-created': 1, 'nodes-created': 2, 'properties-set': 2}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/embeddings', 'files': None, 'post_parser': <function Embeddings.create.<locals>.parser at 0x14d0bfc40>, 'json_data': {'input': [\"('Genetics', 'is', 'rationale')\", \"('paleolithic diet', 'is', 'best fit')\", \"('Loren Cordain', 'described as', 'paleo diet')\", \"('modern humans', 'have not been able to adapt to', 'new circumstances')\", \"('Cordain', 'argue', 'increase in diseases of affluence')\", \"('hunter-gatherer diets', 'rarely included', 'grains')\", \"('obtaining milk', 'would have been', 'nearly impossible')\", \"('diseases of affluence', 'caused by', 'changes in diet')\", \"('pre-agricultural hunter-gatherers', 'did not suffer from', 'diseases of affluence')\", \"('evolutionary discordance hypothesis', 'many chronic diseases and degenerative conditions evident in modern Western populations have arisen because of', 'mismatch between Stone Age genes and modern lifestyles')\"], 'model': <OpenAIEmbeddingModeModel.TEXT_EMBED_ADA_002: 'text-embedding-ada-002'>, 'encoding_format': 'base64'}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.connection:connect_tcp.started host='127.0.0.1' port=7890 local_address=None timeout=5.0 socket_options=None\n",
      "DEBUG:httpcore.connection:connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x14d03ac90>\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'CONNECT']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'CONNECT']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'CONNECT']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'Connection established', [])\n",
      "DEBUG:httpcore.proxy:start_tls.started ssl_context=<ssl.SSLContext object at 0x14d1f4050> server_hostname='firstaiproject.openai.azure.com' timeout=5.0\n",
      "DEBUG:httpcore.proxy:start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x14b8a1cd0>\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Length', b'82865'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'x-content-type-options', b'nosniff'), (b'x-ratelimit-remaining-requests', b'117'), (b'apim-request-id', b'741a42b0-5ce4-44e5-bbd5-fd0236e20908'), (b'x-ratelimit-remaining-tokens', b'119450'), (b'x-request-id', b'65086db7-3919-4bc7-9f24-614428eea067'), (b'x-ms-client-request-id', b'741a42b0-5ce4-44e5-bbd5-fd0236e20908'), (b'x-ms-region', b'East US'), (b'azureml-model-session', b'wd3a5f6e70955-3'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Date', b'Thu, 28 Dec 2023 09:04:04 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/embeddings', 'files': None, 'post_parser': <function Embeddings.create.<locals>.parser at 0x14d0dc220>, 'json_data': {'input': [\"('modern paleo diet', 'formed their dietary recommendations based on', 'evolutionary discordance hypothesis')\", \"('humans', 'can live healthily with', 'variety of diets')\", \"('humans', 'have evolved to be', 'flexible eaters')\", \"('Lactase persistence', 'confers lactose tolerance into', 'adulthood')\", \"('humans', 'have not been', 'nutritionally adaptable')\", \"('technological developments', 'would have been', 'dropped')\", '(\"Eaton and Konner\\'s paper\", \\'provided evidence that evolving humans were continually adapting to\\', \\'new diets\\')', '(\\'Marlene Zuk\\', \\'dismisses\\', \"Cordain\\'s claim\")', \"('Peter Ungar', 'has written that the paleo diet is', 'myth')\", \"('humans', 'have always been', 'work in progress')\"], 'model': <OpenAIEmbeddingModeModel.TEXT_EMBED_ADA_002: 'text-embedding-ada-002'>, 'encoding_format': 'base64'}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Length', b'82865'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'x-content-type-options', b'nosniff'), (b'x-ratelimit-remaining-requests', b'117'), (b'apim-request-id', b'939c64c8-2b50-443c-9eb4-3b7101ffd8a5'), (b'x-ratelimit-remaining-tokens', b'119278'), (b'x-request-id', b'65a2e584-d185-4c01-b22c-ad0a1f43bde5'), (b'x-ms-client-request-id', b'939c64c8-2b50-443c-9eb4-3b7101ffd8a5'), (b'x-ms-region', b'East US'), (b'azureml-model-session', b'wd3a5f6e70955-3'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Date', b'Thu, 28 Dec 2023 09:04:05 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/embeddings', 'files': None, 'post_parser': <function Embeddings.create.<locals>.parser at 0x14d0bf740>, 'json_data': {'input': [\"('diet', 'has always been', 'varied')\", \"('environmental impact', 'ranked consumption of a paleolithic diet as', 'more environmentally harmful than consumption of an omnivorous diet')\", '(\\'Elizabeth Kolbert\\', \"has written the paleolithic diet\\'s emphasis on meat consumption is\", \\'disaster\\')', \"('lifestyle and ideology', 'have developed around', 'diet')\", \"('scientific community', 'pushback from', 'paleolithic diet')\", \"('nutritional research', 'does not support', 'supposed benefits of the paleolithic diet')\", '(\\'paleolithic diet advocate John Durant\\', \\'has blamed suppression of the truth about diet in the United States on\\', \\'\"the vegetarian lobby\"\\')'], 'model': <OpenAIEmbeddingModeModel.TEXT_EMBED_ADA_002: 'text-embedding-ada-002'>, 'encoding_format': 'base64'}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Length', b'58043'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'x-content-type-options', b'nosniff'), (b'x-ratelimit-remaining-requests', b'116'), (b'apim-request-id', b'12a595a7-e469-4614-b53c-d2cf358728d4'), (b'x-ratelimit-remaining-tokens', b'119116'), (b'x-request-id', b'8f70d2da-3cc7-4381-805c-7c55cea1b599'), (b'x-ms-client-request-id', b'12a595a7-e469-4614-b53c-d2cf358728d4'), (b'x-ms-region', b'East US'), (b'azureml-model-session', b'wd3a5f6e70955-4'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Date', b'Thu, 28 Dec 2023 09:04:06 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/deployments/gpt-35-turbo-16k/chat/completions', 'files': None, 'json_data': {'messages': [{'role': <MessageRole.USER: 'user'>, 'content': \"Some text is provided below. Given the text, extract up to 10 knowledge triplets in the form of (subject, predicate, object). Avoid stopwords.\\n---------------------\\nExample:Text: Alice is Bob's mother.Triplets:\\n(Alice, is mother of, Bob)\\nText: Philz is a coffee shop founded in Berkeley in 1982.\\nTriplets:\\n(Philz, is, coffee shop)\\n(Philz, founded in, Berkeley)\\n(Philz, founded in, 1982)\\n---------------------\\nText: == See also ==\\n\\n\\n== Citations ==\\n\\n\\n== References ==\\n\\n\\n== Further reading ==\\n\\n\\n== External links ==\\nHuman Timeline (Interactive) – Smithsonian, National Museum of Natural History (August 2016).\\nTriplets:\\n\"}], 'model': 'gpt-35-turbo-16k', 'stream': False, 'temperature': 0.1}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Cache-Control', b'no-cache, must-revalidate'), (b'Content-Length', b'1033'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'apim-request-id', b'007bb238-62df-4bd4-a49c-a26e85aa9e73'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'x-content-type-options', b'nosniff'), (b'x-ms-region', b'East US'), (b'x-ratelimit-remaining-requests', b'118'), (b'x-ratelimit-remaining-tokens', b'119920'), (b'x-accel-buffering', b'no'), (b'x-request-id', b'442fe618-00ea-4fe6-a31c-1094ed24669f'), (b'x-ms-client-request-id', b'007bb238-62df-4bd4-a49c-a26e85aa9e73'), (b'azureml-model-session', b'turbo-0613-bc549a28'), (b'Date', b'Thu, 28 Dec 2023 09:04:08 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:llama_index.indices.knowledge_graph.base:> Extracted triplets: [('Smithsonian', 'is', 'National Museum of Natural History'), ('Smithsonian', 'has', 'Human Timeline'), ('Human Timeline', 'is', 'Interactive'), ('Human Timeline', 'belongs to', 'Smithsonian'), ('Smithsonian', 'published by', 'National Museum of Natural History'), ('Smithsonian', 'published in', 'August 2016')]\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS`]->(n2)\\n        ' {'subj': 'Smithsonian', 'obj': 'National Museum of Natural History'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAS`]->(n2)\\n        ' {'subj': 'Smithsonian', 'obj': 'Human Timeline'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS`]->(n2)\\n        ' {'subj': 'Human Timeline', 'obj': 'Interactive'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`BELONGS_TO`]->(n2)\\n        ' {'subj': 'Human Timeline', 'obj': 'Smithsonian'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 13, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`PUBLISHED_BY`]->(n2)\\n        ' {'subj': 'Smithsonian', 'obj': 'National Museum of Natural History'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 12, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`PUBLISHED_IN`]->(n2)\\n        ' {'subj': 'Smithsonian', 'obj': 'August 2016'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 12, 'fields': []}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/embeddings', 'files': None, 'post_parser': <function Embeddings.create.<locals>.parser at 0x14d5e80e0>, 'json_data': {'input': [\"('Smithsonian', 'is', 'National Museum of Natural History')\", \"('Smithsonian', 'has', 'Human Timeline')\", \"('Human Timeline', 'is', 'Interactive')\", \"('Human Timeline', 'belongs to', 'Smithsonian')\", \"('Smithsonian', 'published by', 'National Museum of Natural History')\", \"('Smithsonian', 'published in', 'August 2016')\"], 'model': <OpenAIEmbeddingModeModel.TEXT_EMBED_ADA_002: 'text-embedding-ada-002'>, 'encoding_format': 'base64'}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Length', b'49767'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'x-content-type-options', b'nosniff'), (b'x-ratelimit-remaining-requests', b'116'), (b'apim-request-id', b'76e52a8c-764c-4906-bed3-2c6f480280fb'), (b'x-ratelimit-remaining-tokens', b'119039'), (b'x-request-id', b'ce90fcbe-dae8-475b-b299-c8ad0deddbb3'), (b'x-ms-client-request-id', b'76e52a8c-764c-4906-bed3-2c6f480280fb'), (b'x-ms-region', b'East US'), (b'azureml-model-session', b'wd3a5f6e70955-2'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Date', b'Thu, 28 Dec 2023 09:04:08 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: The Paleolithic diet, Paleo diet, caveman diet,...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: == History and terminology ==\n",
      "Adrienne Rose Joh...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: == Foodstuffs ==\n",
      "The basis of the diet is a re-...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: Molecular biologist Marion Nestle argues that \"...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: Descendants of populations with different diets...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: == Genetics ==\n",
      "The stated rationale for the pal...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: Studies of a variety of populations around the ...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: In 2016, she was quoted as saying \"It drives me...\n",
      "loaded nodes with 8 nodes\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/embeddings', 'files': None, 'post_parser': <function Embeddings.create.<locals>.parser at 0x14d5e8360>, 'json_data': {'input': ['The Paleolithic diet, Paleo diet, caveman diet, or stone-age diet is a modern fad diet consisting of foods thought by its proponents to mirror those eaten by humans during the Paleolithic era.The diet avoids food processing and typically includes vegetables, fruits, nuts, roots, and meat and excludes dairy products, grains, sugar, legumes, processed oils, salt, alcohol, and coffee. Historians can trace the ideas behind the diet to \"primitive\" diets advocated in 19th century. In the 1970s, Walter L. Voegtlin popularized a meat-centric \"Stone Age\" diet; in the 21st century the best-selling books of Loren Cordain popularized the Paleo diet. As of 2019 the paleo-diet industry was worth approximately US$500 million.In the 21st century, the sequencing of the human genome and DNA analysis of the remains of early humans have found evidence that humans evolved rapidly in response to changing diet. This evidence undermines a core premise of the paleolithic diet – that human digestion has remained essentially unchanged over time. Anthropological science has found that human diets in paleolithic times were more varied and less meat-centric than had previously been assumed. Advocates promote the paleolithic diet as a way of improving health. There is some evidence that following it may lead to improvements in body composition and metabolism compared with the typical Western diet or compared with diets recommended by some European nutritional guidelines. On the other hand, following the diet can lead to nutritional deficiencies such as an inadequate calcium intake, and side effects can include weakness, diarrhea, and headaches.', '== History and terminology == Adrienne Rose Johnson writes that the idea that the primitive diet was superior to current dietary habits dates back to the 1890s with such writers as Emmet Densmore and John Harvey Kellogg. Densmore proclaimed that \"bread is the staff of death\", while Kellogg supported a diet of starchy and grain-based foods in accord with \"the ways and likings of our primitive ancestors\". Arnold DeVries advocated an early version of the Paleolithic diet in his 1952 book, Primitive Man and His Food. In 1958, Richard Mackarness authored Eat Fat and Grow Slim, which proposed a low-carbohydrate \"Stone Age\" diet.In his 1975 book The Stone Age Diet, gastroenterologist Walter L. Voegtlin advocated a meat-based diet, with low proportions of vegetables and starchy foods, based on his declaration that humans were \"exclusively flesh-eaters\" until 10,000 years ago.In 1985 Stanley Boyd Eaton and Melvin Konner published a controversial article in the New England Journal of Medicine proposing that modern humans were biologically very similar to their primitive ancestors and so \"genetically programmed\" to consume pre-agricultural foods. Eaton and Konner proposed a \"discordance hypothesis\" by which the mismatch between modern diet and human biology gave rise to lifestyle diseases, such as obesity and diabetes.The diet started to become popular in the 21st century, where it attracted a largely internet-based following using web sites, forums and social media.This diet\\'s ideas were further popularized by Loren Cordain, a health scientist with a Ph.D. in physical education, who trademarked the words \"The Paleo Diet\" and who wrote a 2002 book of that title.In 2012 the paleolithic diet was described as being one of the \"latest trends\" in diets, based on the popularity of diet books about it; in 2013 and 2014 the Paleolithic diet was Google\\'s most searched weight-loss method.The paleolithic or paleo diet is also sometimes referred to as the caveman or stone-age diet.', '== Foodstuffs == The basis of the diet is a re-imagining of what Paleolithic people ate, and different proponents recommend different diet compositions. Eaton and Konner, for example, wrote a 1988 book The Paleolithic Prescription with Marjorie Shostak, and it described a diet that is 65% plant-based. This is not typical of more recently devised paleo diets; Loren Cordain\\'s – probably the most popular – instead emphasizes animal products and avoidance of processed food. Diet advocates concede the modern paleolithic diet cannot be a faithful recreation of what paleolithic people ate, and instead aim to \"translate\" that into a modern context, avoiding such likely historical practices as cannibalism.Foodstuffs that have been described as permissible include:  \"vegetables, fruits, nuts, roots, meat, and organ meats\"; \"vegetables (including root vegetables), fruit (including fruit oils, e.g., olive oil, coconut oil, and palm oil), nuts, fish, meat, and eggs, and it excluded dairy, grain-based foods, legumes, extra sugar, and nutritional products of industry (including refined fats and refined carbohydrates)\"; and \"avoids processed foods, and emphasizes eating vegetables, fruits, nuts and seeds, eggs, and lean meats\".The diet forbids the consumption of all dairy products. This is because milking did not exist until animals were domesticated after the Paleolithic era.   === Ancestral diet ===  Adopting the Paleolithic diet assumes that modern humans can reproduce the hunter-gatherer diet. Molecular biologist Marion Nestle argues that \"knowledge of the relative proportions of animal and plant foods in the diets of early humans is circumstantial, incomplete, and debatable and that there are insufficient data to identify the composition of a genetically determined optimal diet. The evidence related to Paleolithic diets is best interpreted as supporting the idea that diets based largely on plant foods promote health and longevity, at least under conditions of food abundance and physical activity.\" Ideas about Paleolithic diet and nutrition are at best hypothetical.The data for Cordain\\'s book only came from six contemporary hunter-gatherer groups, mainly living in marginal habitats. One of the studies was on the !Kung, whose diet was recorded for a single month, and one was on the Inuit. Due to these limitations, the book has been criticized as painting an incomplete picture of the diets of Paleolithic humans.', 'Molecular biologist Marion Nestle argues that \"knowledge of the relative proportions of animal and plant foods in the diets of early humans is circumstantial, incomplete, and debatable and that there are insufficient data to identify the composition of a genetically determined optimal diet. The evidence related to Paleolithic diets is best interpreted as supporting the idea that diets based largely on plant foods promote health and longevity, at least under conditions of food abundance and physical activity.\" Ideas about Paleolithic diet and nutrition are at best hypothetical.The data for Cordain\\'s book only came from six contemporary hunter-gatherer groups, mainly living in marginal habitats. One of the studies was on the !Kung, whose diet was recorded for a single month, and one was on the Inuit. Due to these limitations, the book has been criticized as painting an incomplete picture of the diets of Paleolithic humans. It has been noted that the rationale for the diet does not adequately account for the fact that, due to the pressures of artificial selection, most modern domesticated plants and animals differ drastically from their Paleolithic ancestors; likewise, their nutritional profiles are very different from their ancient counterparts. For example, wild almonds produce potentially fatal levels of cyanide, but this trait has been bred out of domesticated varieties using artificial selection. Many vegetables, such as broccoli, did not exist in the Paleolithic period; broccoli, cabbage, cauliflower, and kale are modern cultivars of the ancient species Brassica oleracea.Trying to devise an ideal diet by studying contemporary hunter-gatherers is difficult because of the great disparities that exist; for example, the animal-derived calorie percentage ranges from 25% for the Gwi people of southern Africa to 99% for the Alaskan Nunamiut. Descendants of populations with different diets have different genetic adaptations to those diets, such as the ability to digest sugars from starchy foods. Modern hunter-gatherers tend to exercise considerably more than modern office workers, protecting them from heart disease and diabetes, though highly processed modern foods also contribute to diabetes when those populations move into cities.A 2018 review of the diet of hunter-gatherer populations found that the dietary provisions of the paleolithic diet had been based on questionable research, and were \"difficult to reconcile with more detailed ethnographic and nutritional studies of hunter-gatherer diet\".Researchers have proposed that cooked starches met the energy demands of an increasing brain size, based on variations in the copy number of genes encoding amylase.', 'Descendants of populations with different diets have different genetic adaptations to those diets, such as the ability to digest sugars from starchy foods. Modern hunter-gatherers tend to exercise considerably more than modern office workers, protecting them from heart disease and diabetes, though highly processed modern foods also contribute to diabetes when those populations move into cities.A 2018 review of the diet of hunter-gatherer populations found that the dietary provisions of the paleolithic diet had been based on questionable research, and were \"difficult to reconcile with more detailed ethnographic and nutritional studies of hunter-gatherer diet\".Researchers have proposed that cooked starches met the energy demands of an increasing brain size, based on variations in the copy number of genes encoding amylase.   == Health effects == The paleolithic diet is controversial in part because of the exaggerated health claims made for it by its supporters. In general, methodological quality of research into the diet has been poor to moderate.The aspects of the paleolithic diet that result in eating fewer processed foods and less sugar and salt are consistent with mainstream advice about diet. Diets with a paleolithic nutrition pattern have some similarities to traditional ethnic diets such as the Mediterranean diet that have been found to be healthier than the Western diet. Following the paleolithic diet, however, can lead to nutritional deficiencies such as those of vitamin D and calcium, which in turn could lead to compromised bone health; it can also lead to an increased risk of ingesting toxins from high fish consumption.There is some evidence the diet helps achieve weight loss, possibly because of the increased satiety from the foods typically eaten. One trial of obese postmenopausal women found improvements in weight and fat loss after six months, but the benefits had ceased by 24 months; side effects among participants included \"weakness, diarrhea, and headaches\". As with any other diet regime, the paleolithic diet leads to weight loss because of overall decreased caloric intake, rather than a special feature of the diet itself.There is no good evidence that following a paleolithic diet lessens the risk of cardiovascular disease or metabolic syndrome. There is no evidence the paleolithic diet is effective in treating inflammatory bowel disease.The paleolithic diet similar to the Atkins diet encourages the consumption of large amounts of red meat, especially meats high in saturated fat. This has a negative effect on health in the long run as medical studies have shown that it can lead to increased incidence of cardiovascular disease.', '== Genetics == The stated rationale for the paleolithic diet is that human genes of modern times are unchanged from those of 10,000 years ago, and that the diet of that time is therefore the best fit with humans today. Loren Cordain has described the paleo diet as \"the one and only diet that ideally fits our genetic makeup\".The argument is that modern humans have not been able to adapt to the new circumstances. According to Cordain, before the agricultural revolution, hunter-gatherer diets rarely included grains, and obtaining milk from wild animals would have been \"nearly impossible\". Advocates of the diet argue that the increase in diseases of affluence after the dawn of agriculture was caused by these changes in diet, but others have countered that it may be that pre-agricultural hunter-gatherers did not suffer from the diseases of affluence because they did not live long enough to develop them.According to the model from the evolutionary discordance hypothesis, \"many chronic diseases and degenerative conditions evident in modern Western populations have arisen because of a mismatch between Stone Age genes and modern lifestyles.\" Advocates of the modern paleo diet have formed their dietary recommendations based on this hypothesis. They argue that modern humans should follow a diet that is nutritionally closer to that of their Paleolithic ancestors. The evolutionary discordance is incomplete, since it is based mainly on the genetic understanding of the human diet and a unique model of human ancestral diets, without taking into account the flexibility and variability of the human dietary behaviors over time. Studies of a variety of populations around the world show that humans can live healthily with a wide variety of diets and that humans have evolved to be flexible eaters. Lactase persistence, which confers lactose tolerance into adulthood, is an example of how some humans have adapted to the introduction of dairy into their diet. While the introduction of grains, dairy, and legumes during the Neolithic revolution may have had some adverse effects on modern humans, if humans had not been nutritionally adaptable, these technological developments would have been dropped.Since the publication of Eaton and Konner\\'s paper in 1985, analysis of the DNA of primitive human remains has provided evidence that evolving humans were continually adapting to new diets, thus challenging the hypothesis underlying the paleothic diet.', 'Studies of a variety of populations around the world show that humans can live healthily with a wide variety of diets and that humans have evolved to be flexible eaters. Lactase persistence, which confers lactose tolerance into adulthood, is an example of how some humans have adapted to the introduction of dairy into their diet. While the introduction of grains, dairy, and legumes during the Neolithic revolution may have had some adverse effects on modern humans, if humans had not been nutritionally adaptable, these technological developments would have been dropped.Since the publication of Eaton and Konner\\'s paper in 1985, analysis of the DNA of primitive human remains has provided evidence that evolving humans were continually adapting to new diets, thus challenging the hypothesis underlying the paleothic diet. Evolutionary biologist Marlene Zuk writes that the idea that our genetic makeup today matches that of our ancestors is misconceived, and that in debate Cordain was \"taken aback\" when told that 10,000 years was \"plenty of time\" for an evolutionary change in human digestive abilities to have taken place. On this basis Zuk dismisses Cordain\\'s claim that the paleo diet is \"the one and only diet that fits our genetic makeup\".Paleoanthropologist Peter Ungar has written that the paleo diet is a \"myth\", on account both of its invocation of a single suitable diet when in reality humans have always been a \"work in progress\", and because diet has always been varied because humans were spread widely over the planet.Anthropological geneticist Anne C. Stone has said that humans have adapted in the last 10,000 years in response to radical changes in diet. In 2016, she was quoted as saying \"It drives me crazy when Paleo-diet people say that we\\'ve stopped evolving—we haven\\'t\".Melvin Konner has said the challenge to the hypothesis is not greatly significant since the real challenges to human non-adaptation have occurred with the rise of ever-more refined foodstuffs in the last 300 years.   == Environmental impact == A 2019 analysis of diets in the United States ranked consumption of a paleolithic diet as more environmentally harmful than consumption of an omnivorous diet, though not so harmful as a ketogenic diet.Elizabeth Kolbert has written the paleolithic diet\\'s emphasis on meat consumption is a \"disaster\" on account of meat\\'s comparatively high energy production costs.', 'In 2016, she was quoted as saying \"It drives me crazy when Paleo-diet people say that we\\'ve stopped evolving—we haven\\'t\".Melvin Konner has said the challenge to the hypothesis is not greatly significant since the real challenges to human non-adaptation have occurred with the rise of ever-more refined foodstuffs in the last 300 years.   == Environmental impact == A 2019 analysis of diets in the United States ranked consumption of a paleolithic diet as more environmentally harmful than consumption of an omnivorous diet, though not so harmful as a ketogenic diet.Elizabeth Kolbert has written the paleolithic diet\\'s emphasis on meat consumption is a \"disaster\" on account of meat\\'s comparatively high energy production costs.   == Popularity == A lifestyle and ideology have developed around the diet. \"Paleolithic\" products include clothing, smartphone apps, and cookware. Many paleolithic cookery books have been bestsellers.As of 2019 the market for products with the word \"Paleo\" in their name was worth approximately $US500\\u2009million, with strong growth prospects despite pushback from the scientific community. Some products were taking advantage of the trend by touting themselves as \"paleo-approved\" despite having no apparent link to the movement\\'s tenets.Like many other diets, the paleolithic diet is promoted by some by an appeal to nature and a narrative of conspiracy theories about how nutritional research, which does not support the supposed benefits of the paleolithic diet, is controlled by a malign food industry. Paleolithic diet advocate John Durant has blamed suppression of the truth about diet in the United States on \"the vegetarian lobby\".   == See also ==   == Citations ==   == References ==   == Further reading ==   == External links == Human Timeline (Interactive) – Smithsonian, National Museum of Natural History (August 2016).'], 'model': <OpenAIEmbeddingModeModel.TEXT_EMBED_ADA_002: 'text-embedding-ada-002'>, 'encoding_format': 'base64'}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Length', b'66319'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'x-content-type-options', b'nosniff'), (b'x-ratelimit-remaining-requests', b'115'), (b'apim-request-id', b'a5c76b36-5c4c-4cca-9045-f070d3e00de5'), (b'x-ratelimit-remaining-tokens', b'114485'), (b'x-request-id', b'7e43ce74-607f-4d1e-b635-f5743d6939a4'), (b'x-ms-client-request-id', b'a5c76b36-5c4c-4cca-9045-f070d3e00de5'), (b'x-ms-region', b'East US'), (b'azureml-model-session', b'wd3a5f6e70955-8'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Date', b'Thu, 28 Dec 2023 09:04:08 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"200 OK\"\n"
     ]
    }
   ],
   "source": [
    "from llama_hub.llama_packs.neo4j_query_engine.base import Neo4jQueryEngineType\n",
    "\n",
    "\n",
    "# create the pack\n",
    "neo4j_pack = Neo4jQueryEnginePack(\n",
    "  username = username,\n",
    "  password = password,\n",
    "  url = url,\n",
    "  database = database,\n",
    "  docs = documents,\n",
    "  query_engine_type = Neo4jQueryEngineType.KG_KEYWORD,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "2ViEkJinLLiH"
   },
   "source": [
    "## Run Pack"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 81
    },
    "id": "mn2DIWuX1XBR",
    "outputId": "67edb07d-2d7c-4c84-da60-01cca8ec7a64"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/deployments/gpt-35-turbo-16k/chat/completions', 'files': None, 'json_data': {'messages': [{'role': <MessageRole.USER: 'user'>, 'content': \"A question is provided below. Given the question, extract up to 10 keywords from the text. Focus on extracting the keywords that we can use to best lookup answers to the question. Avoid stopwords.\\n---------------------\\nTell me about the benefits of paleo diet.\\n---------------------\\nProvide keywords in the following comma-separated format: 'KEYWORDS: <keywords>'\\n\"}], 'model': 'gpt-35-turbo-16k', 'stream': False, 'temperature': 0.1}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Cache-Control', b'no-cache, must-revalidate'), (b'Content-Length', b'786'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'apim-request-id', b'5c618aac-df72-4877-97ba-b61b14bb36aa'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'x-content-type-options', b'nosniff'), (b'x-ms-region', b'East US'), (b'x-ratelimit-remaining-requests', b'118'), (b'x-ratelimit-remaining-tokens', b'119904'), (b'x-accel-buffering', b'no'), (b'x-request-id', b'ce276dc7-afb2-4fe4-8cf2-de067e80e8f5'), (b'x-ms-client-request-id', b'5c618aac-df72-4877-97ba-b61b14bb36aa'), (b'azureml-model-session', b'turbo-0613-f3706795'), (b'Date', b'Thu, 28 Dec 2023 09:04:11 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN 'MATCH p=(n1:Entity)-[*1..2]->() WHERE n1.id IN $subjs UNWIND relationships(p) AS rel WITH n1.id AS subj, p, apoc.coll.flatten(apoc.coll.toSet(collect([type(rel), endNode(rel).id]))) AS flattened_rels RETURN subj, collect(flattened_rels) AS flattened_rels LIMIT 30' {'subjs': ['diet']} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 2, 'fields': ['subj', 'flattened_rels']}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'type': 'r', 't_last': 2, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:llama_index.indices.knowledge_graph.retrievers:rel_map: {'diet': [['IS', 're-imagining of what Paleolithic people ate'], ['IS', '65% plant-based'], ['FORBIDS', 'consumption of all dairy products'], ['CAUSED_BY', 'changes in diet'], ['HAS_ALWAYS_BEEN', 'varied']]}\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN 'MATCH p=(n1:Entity)-[*1..2]->() WHERE n1.id IN $subjs UNWIND relationships(p) AS rel WITH n1.id AS subj, p, apoc.coll.flatten(apoc.coll.toSet(collect([type(rel), endNode(rel).id]))) AS flattened_rels RETURN subj, collect(flattened_rels) AS flattened_rels LIMIT 30' {'subjs': ['benefits']} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': ['subj', 'flattened_rels']}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'type': 'r', 't_last': 1, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:llama_index.indices.knowledge_graph.retrievers:rel_map: {}\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN 'MATCH p=(n1:Entity)-[*1..2]->() WHERE n1.id IN $subjs UNWIND relationships(p) AS rel WITH n1.id AS subj, p, apoc.coll.flatten(apoc.coll.toSet(collect([type(rel), endNode(rel).id]))) AS flattened_rels RETURN subj, collect(flattened_rels) AS flattened_rels LIMIT 30' {'subjs': ['paleo']} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 16, 'fields': ['subj', 'flattened_rels']}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'type': 'r', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:llama_index.indices.knowledge_graph.retrievers:rel_map: {}\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> picked existing connection bolt-77\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#D907]  C: RUN 'MATCH p=(n1:Entity)-[*1..2]->() WHERE n1.id IN $subjs UNWIND relationships(p) AS rel WITH n1.id AS subj, p, apoc.coll.flatten(apoc.coll.toSet(collect([type(rel), endNode(rel).id]))) AS flattened_rels RETURN subj, collect(flattened_rels) AS flattened_rels LIMIT 30' {'subjs': ['paleo diet']} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'t_first': 1, 'fields': ['subj', 'flattened_rels']}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#D907]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'type': 'r', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#D907]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#D907]  _: <POOL> released bolt-77\n",
      "DEBUG:llama_index.indices.knowledge_graph.retrievers:rel_map: {}\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/deployments/gpt-35-turbo-16k/chat/completions', 'files': None, 'json_data': {'messages': [{'role': <MessageRole.SYSTEM: 'system'>, 'content': \"You are an expert Q&A system that is trusted around the world.\\nAlways answer the query using the provided context information, and not prior knowledge.\\nSome rules to follow:\\n1. Never directly reference the given context in your answer.\\n2. Avoid statements like 'Based on the context, ...' or 'The context information ...' or anything along those lines.\"}, {'role': <MessageRole.USER: 'user'>, 'content': \"Context information from multiple sources is below.\\n---------------------\\nkg_schema: {'schema': 'Node properties are the following:\\\\nEntity {id: STRING},Product {unitPrice: FLOAT, productName: STRING, productID: STRING, unitsOnOrder: INTEGER, supplierID: STRING, categoryID: STRING, discontinued: BOOLEAN, unitsInStock: INTEGER, quantityPerUnit: STRING, reorderLevel: INTEGER},Category {picture: STRING, categoryID: STRING, categoryName: STRING, description: STRING},Supplier {address: STRING, companyName: STRING, region: STRING, contactName: STRING, fax: STRING, phone: STRING, postalCode: STRING, contactTitle: STRING, country: STRING, supplierID: STRING, city: STRING, homePage: STRING},Customer {address: STRING, companyName: STRING, fax: STRING, region: STRING, customerID: STRING, country: STRING, contactName: STRING, contactTitle: STRING, postalCode: STRING, city: STRING, phone: STRING},Order {requiredDate: STRING, shippedDate: STRING, shipName: STRING, shipPostalCode: STRING, shipCity: STRING, shipCountry: STRING, shipAddress: STRING, employeeID: STRING, orderDate: STRING, customerID: STRING, shipVia: STRING, orderID: STRING, shipRegion: STRING, freight: STRING}\\\\nRelationship properties are the following:\\\\nORDERS {unitPrice: STRING, orderID: STRING, quantity: INTEGER, discount: STRING, productID: STRING}\\\\nThe relationships are the following:\\\\n(:Entity)-[:IS]->(:Entity),(:Entity)-[:POPULARIZED]->(:Entity),(:Entity)-[:DESCRIBED_AS]->(:Entity),(:Entity)-[:WORTH]->(:Entity),(:Entity)-[:REMAINED_ESSENTIALLY_UNCHANGED]->(:Entity),(:Entity)-[:HUMAN_DIETS]->(:Entity),(:Entity)-[:CAUSED_BY]->(:Entity),(:Entity)-[:FORBIDS]->(:Entity),(:Entity)-[:RECOMMEND]->(:Entity),(:Entity)-[:WROTE]->(:Entity),(:Entity)-[:DESCRIBED]->(:Entity),(:Entity)-[:AVOIDANCE_OF]->(:Entity),(:Entity)-[:EMPHASIZES]->(:Entity),(:Entity)-[:AIM_TO]->(:Entity),(:Entity)-[:LEADS_TO]->(:Entity),(:Entity)-[:UNDERMINES]->(:Entity),(:Entity)-[:LEAD_TO]->(:Entity),(:Entity)-[:HELPS_ACHIEVE]->(:Entity),(:Entity)-[:PROMOTES]->(:Entity),(:Entity)-[:IS_CONTROVERSIAL_IN_PART_BECAUSE_OF]->(:Entity),(:Entity)-[:IS_CONTROVERSIAL_IN]->(:Entity),(:Entity)-[:HAS_BEEN_POOR_TO_MODERATE]->(:Entity),(:Entity)-[:RESULT_IN]->(:Entity),(:Entity)-[:CONSISTENT_WITH]->(:Entity),(:Entity)-[:HAVE_SIMILARITIES_TO]->(:Entity),(:Entity)-[:HAVE_BEEN_FOUND_TO_BE_HEALTHIER_THAN]->(:Entity),(:Entity)-[:CAN_LEAD_TO]->(:Entity),(:Entity)-[:RARELY_INCLUDED]->(:Entity),(:Entity)-[:WOULD_HAVE_BEEN]->(:Entity),(:Entity)-[:DID_NOT_SUFFER_FROM]->(:Entity),(:Entity)-[:MANY_CHRONIC_DISEASES_AND_DEGENERATIVE_CONDITIONS_EVIDENT_IN_MODERN_WESTERN_POPULATIONS_HAVE_ARISEN_BECAUSE_OF]->(:Entity),(:Entity)-[:MANY_CHRONIC_DISEASES_AND_DEGENERATIVE_CONDITIONS]->(:Entity),(:Entity)-[:MANY_CHRONIC_DISEASES_AND_DEGENERATIVE_CONDITIONS_EVIDENT_IN]->(:Entity),(:Entity)-[:FORMED_THEIR_DIETARY_RECOMMENDATIONS_BASED_ON]->(:Entity),(:Entity)-[:FORMED_THEIR_DIETARY_RECOMMENDATIONS]->(:Entity),(:Entity)-[:CAN_LIVE_HEALTHILY_WITH]->(:Entity),(:Entity)-[:CAN_LIVE_HEALTHILY]->(:Entity),(:Entity)-[:HAS]->(:Entity),(:Entity)-[:PUBLISHED_IN]->(:Entity),(:Entity)-[:PUBLISHED_BY]->(:Entity),(:Entity)-[:BELONGS_TO]->(:Entity),(:Entity)-[:HAVE_NOT_BEEN_ABLE_TO_ADAPT_TO]->(:Entity),(:Entity)-[:ARGUE]->(:Entity),(:Entity)-[:ARGUE_THAT]->(:Entity),(:Entity)-[:CONFERS_LACTOSE_TOLERANCE_INTO]->(:Entity),(:Product)-[:PART_OF]->(:Category),(:Supplier)-[:SUPPLIES]->(:Product),(:Customer)-[:PURCHASED]->(:Order),(:Order)-[:ORDERS]->(:Product)'}\\n\\nThe following are knowledge sequence in max depth 2 in the form of directed graph like:\\n`subject -[predicate]->, object, <-[predicate_next_hop]-, object_next_hop ...`\\n['IS', 're-imagining of what Paleolithic people ate']\\n['IS', '65% plant-based']\\n['FORBIDS', 'consumption of all dairy products']\\n['CAUSED_BY', 'changes in diet']\\n['HAS_ALWAYS_BEEN', 'varied']\\n---------------------\\nGiven the information from multiple sources and not prior knowledge, answer the query.\\nQuery: Tell me about the benefits of paleo diet.\\nAnswer: \"}], 'model': 'gpt-35-turbo-16k', 'stream': False, 'temperature': 0.1}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Cache-Control', b'no-cache, must-revalidate'), (b'Content-Length', b'1041'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'apim-request-id', b'd40ecf5e-a05b-4946-ac4e-3c39b01da3aa'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'x-content-type-options', b'nosniff'), (b'x-ms-region', b'East US'), (b'x-ratelimit-remaining-requests', b'117'), (b'x-ratelimit-remaining-tokens', b'119888'), (b'x-accel-buffering', b'no'), (b'x-request-id', b'0cefcc4f-ba6e-4809-8d67-97bf46037e5a'), (b'x-ms-client-request-id', b'd40ecf5e-a05b-4946-ac4e-3c39b01da3aa'), (b'azureml-model-session', b'turbo-0613-65c7dc11'), (b'Date', b'Thu, 28 Dec 2023 09:04:12 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"200 OK\"\n"
     ]
    },
    {
     "data": {
      "text/markdown": [
       "<b>The benefits of the paleo diet include a re-imagining of what Paleolithic people ate, a diet that is 65% plant-based, and the forbidding of consumption of all dairy products. Additionally, the paleo diet has always been varied, which can contribute to its overall health benefits.</b>"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from IPython.display import Markdown\n",
    "\n",
    "response = neo4j_pack.run(\"Tell me about the benefits of paleo diet.\")\n",
    "display(Markdown(f\"<b>{response}</b>\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "a8JoNXXwL9_M"
   },
   "source": [
    "我们尝试使用KG混合查询引擎。请参见下面的代码。你可以通过替换 `Neo4jQueryEngineType` 枚举中的其他查询引擎类型来以类似的方式尝试任何其他查询引擎。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 133
    },
    "id": "vEzStIYvJa9S",
    "outputId": "95136bdf-68a7-4dd7-912b-ca4cd6d2fb23"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "DEBUG:neo4j:[#0000]  _: <POOL> created, direct address IPv4Address(('127.0.0.1', 7687))\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='READ', database=None\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> trying to hand out new connection\n",
      "DEBUG:neo4j:[#0000]  _: <RESOLVE> in: 127.0.0.1:7687\n",
      "DEBUG:neo4j:[#0000]  _: <RESOLVE> dns resolver out: 127.0.0.1:7687\n",
      "DEBUG:neo4j:[#0000]  C: <OPEN> 127.0.0.1:7687\n",
      "DEBUG:neo4j:[#DA8F]  C: <MAGIC> 0x6060B017\n",
      "DEBUG:neo4j:[#DA8F]  C: <HANDSHAKE> 0x00040405 0x00020404 0x00000104 0x00000003\n",
      "DEBUG:neo4j:[#DA8F]  S: <HANDSHAKE> 0x00000405\n",
      "DEBUG:neo4j:[#DA8F]  C: HELLO {'user_agent': 'neo4j-python/5.15.0 Python/3.11.6-final-0 (darwin)', 'bolt_agent': {'product': 'neo4j-python/5.15.0', 'platform': 'Darwin 23.2.0; arm64', 'language': 'Python/3.11.6-final-0', 'language_details': 'CPython; 3.11.6-final-0 (main, Oct  3 2023 10:37:07) [Clang 15.0.7 ]'}}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> client state: CONNECTED > AUTHENTICATION\n",
      "DEBUG:neo4j:[#DA8F]  C: LOGON {'scheme': 'basic', 'principal': 'neo4j', 'credentials': '*******'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> client state: AUTHENTICATION > READY\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'server': 'Neo4j/5.15.0', 'connection_id': 'bolt-78', 'hints': {'connection.recv_timeout_seconds': 120}}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: CONNECTED > AUTHENTICATION\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: AUTHENTICATION > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\nCALL apoc.meta.data()\\nYIELD label, other, elementType, type, property\\nWHERE NOT type = \"RELATIONSHIP\" AND elementType = \"node\"\\nWITH label AS nodeLabels, collect({property:property, type:type}) AS properties\\nRETURN {labels: nodeLabels, properties: properties} AS output\\n\\n' {} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> client state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': ['output']}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'type': 'r', 't_last': 23, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\nCALL apoc.meta.data()\\nYIELD label, other, elementType, type, property\\nWHERE NOT type = \"RELATIONSHIP\" AND elementType = \"relationship\"\\nWITH label AS nodeLabels, collect({property:property, type:type}) AS properties\\nRETURN {type: nodeLabels, properties: properties} AS output\\n' {} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': ['output']}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'type': 'r', 't_last': 5, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\nCALL apoc.meta.data()\\nYIELD label, other, elementType, type, property\\nWHERE type = \"RELATIONSHIP\" AND elementType = \"node\"\\nUNWIND other AS other_node\\nRETURN {start: label, type: property, end: toString(other_node)} AS output\\n' {} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 0, 'fields': ['output']}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'type': 'r', 't_last': 7, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n                CREATE CONSTRAINT IF NOT EXISTS FOR (n:Entity) REQUIRE n.id IS UNIQUE;\\n                ' {} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'type': 's', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: The Paleolithic diet, Paleo diet, caveman diet,...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: == Foodstuffs ==\n",
      "The basis of the diet is a re-...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: == Health effects ==\n",
      "The paleolithic diet is co...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: == Genetics ==\n",
      "The stated rationale for the pal...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: == See also ==\n",
      "\n",
      "\n",
      "== Citations ==\n",
      "\n",
      "\n",
      "== Reference...\n",
      "DEBUG:httpx:load_ssl_context verify=True cert=None trust_env=True http2=False\n",
      "DEBUG:httpx:load_verify_locations cafile='/Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages/certifi/cacert.pem'\n",
      "DEBUG:httpx:load_ssl_context verify=True cert=None trust_env=True http2=False\n",
      "DEBUG:httpx:load_verify_locations cafile='/Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages/certifi/cacert.pem'\n",
      "DEBUG:httpx:load_ssl_context verify=True cert=None trust_env=True http2=False\n",
      "DEBUG:httpx:load_verify_locations cafile='/Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages/certifi/cacert.pem'\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/deployments/gpt-35-turbo-16k/chat/completions', 'files': None, 'json_data': {'messages': [{'role': <MessageRole.USER: 'user'>, 'content': 'Some text is provided below. Given the text, extract up to 10 knowledge triplets in the form of (subject, predicate, object). Avoid stopwords.\\n---------------------\\nExample:Text: Alice is Bob\\'s mother.Triplets:\\n(Alice, is mother of, Bob)\\nText: Philz is a coffee shop founded in Berkeley in 1982.\\nTriplets:\\n(Philz, is, coffee shop)\\n(Philz, founded in, Berkeley)\\n(Philz, founded in, 1982)\\n---------------------\\nText: The Paleolithic diet, Paleo diet, caveman diet, or stone-age diet is a modern fad diet consisting of foods thought by its proponents to mirror those eaten by humans during the Paleolithic era.The diet avoids food processing and typically includes vegetables, fruits, nuts, roots, and meat and excludes dairy products, grains, sugar, legumes, processed oils, salt, alcohol, and coffee. Historians can trace the ideas behind the diet to \"primitive\" diets advocated in 19th century. In the 1970s, Walter L. Voegtlin popularized a meat-centric \"Stone Age\" diet; in the 21st century the best-selling books of Loren Cordain popularized the Paleo diet. As of 2019 the paleo-diet industry was worth approximately US$500 million.In the 21st century, the sequencing of the human genome and DNA analysis of the remains of early humans have found evidence that humans evolved rapidly in response to changing diet. This evidence undermines a core premise of the paleolithic diet – that human digestion has remained essentially unchanged over time. Anthropological science has found that human diets in paleolithic times were more varied and less meat-centric than had previously been assumed.\\nAdvocates promote the paleolithic diet as a way of improving health. There is some evidence that following it may lead to improvements in body composition and metabolism compared with the typical Western diet or compared with diets recommended by some European nutritional guidelines. On the other hand, following the diet can lead to nutritional deficiencies such as an inadequate calcium intake, and side effects can include weakness, diarrhea, and headaches.\\n\\n\\n== History and terminology ==\\nAdrienne Rose Johnson writes that the idea that the primitive diet was superior to current dietary habits dates back to the 1890s with such writers as Emmet Densmore and John Harvey Kellogg. Densmore proclaimed that \"bread is the staff of death\", while Kellogg supported a diet of starchy and grain-based foods in accord with \"the ways and likings of our primitive ancestors\". Arnold DeVries advocated an early version of the Paleolithic diet in his 1952 book, Primitive Man and His Food. In 1958, Richard Mackarness authored Eat Fat and Grow Slim, which proposed a low-carbohydrate \"Stone Age\" diet.In his 1975 book The Stone Age Diet, gastroenterologist Walter L. Voegtlin advocated a meat-based diet, with low proportions of vegetables and starchy foods, based on his declaration that humans were \"exclusively flesh-eaters\" until 10,000 years ago.In 1985 Stanley Boyd Eaton and Melvin Konner published a controversial article in the New England Journal of Medicine proposing that modern humans were biologically very similar to their primitive ancestors and so \"genetically programmed\" to consume pre-agricultural foods. Eaton and Konner proposed a \"discordance hypothesis\" by which the mismatch between modern diet and human biology gave rise to lifestyle diseases, such as obesity and diabetes.The diet started to become popular in the 21st century, where it attracted a largely internet-based following using web sites, forums and social media.This diet\\'s ideas were further popularized by Loren Cordain, a health scientist with a Ph.D. in physical education, who trademarked the words \"The Paleo Diet\" and who wrote a 2002 book of that title.In 2012 the paleolithic diet was described as being one of the \"latest trends\" in diets, based on the popularity of diet books about it; in 2013 and 2014 the Paleolithic diet was Google\\'s most searched weight-loss method.The paleolithic or paleo diet is also sometimes referred to as the caveman or stone-age diet.\\nTriplets:\\n'}], 'model': 'gpt-35-turbo-16k', 'stream': False, 'temperature': 0.1}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.connection:connect_tcp.started host='127.0.0.1' port=7890 local_address=None timeout=60.0 socket_options=None\n",
      "DEBUG:httpcore.connection:connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x14d10e310>\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'CONNECT']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'CONNECT']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'CONNECT']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'Connection established', [])\n",
      "DEBUG:httpcore.proxy:start_tls.started ssl_context=<ssl.SSLContext object at 0x14d1f6f90> server_hostname='firstaiproject.openai.azure.com' timeout=60.0\n",
      "DEBUG:httpcore.proxy:start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x14be21050>\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Cache-Control', b'no-cache, must-revalidate'), (b'Content-Length', b'1155'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'apim-request-id', b'be7cc7b8-aa45-4e58-a793-39c5f87667b9'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'x-content-type-options', b'nosniff'), (b'x-ms-region', b'East US'), (b'x-ratelimit-remaining-requests', b'116'), (b'x-ratelimit-remaining-tokens', b'119872'), (b'x-accel-buffering', b'no'), (b'x-request-id', b'cff7eaad-1d6f-4434-ab4e-c8ecd14144c2'), (b'x-ms-client-request-id', b'be7cc7b8-aa45-4e58-a793-39c5f87667b9'), (b'azureml-model-session', b'turbo-0613-f3706795'), (b'Date', b'Thu, 28 Dec 2023 09:04:15 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:llama_index.indices.knowledge_graph.base:> Extracted triplets: [('Paleolithic diet', 'is', 'fad diet'), ('Paleolithic diet', 'consists of', 'vegetables'), ('Paleolithic diet', 'consists of', 'fruits'), ('Paleolithic diet', 'consists of', 'nuts'), ('Paleolithic diet', 'consists of', 'roots'), ('Paleolithic diet', 'consists of', 'meat'), ('Paleolithic diet', 'excludes', 'dairy products'), ('Paleolithic diet', 'excludes', 'grains'), ('Paleolithic diet', 'excludes', 'sugar'), ('Paleolithic diet', 'excludes', 'legumes')]\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS`]->(n2)\\n        ' {'subj': 'Paleolithic diet', 'obj': 'fad diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA5ZA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`CONSISTS_OF`]->(n2)\\n        ' {'subj': 'Paleolithic diet', 'obj': 'vegetables'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 19, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA55A=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`CONSISTS_OF`]->(n2)\\n        ' {'subj': 'Paleolithic diet', 'obj': 'fruits'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA6JA=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`CONSISTS_OF`]->(n2)\\n        ' {'subj': 'Paleolithic diet', 'obj': 'nuts'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA6ZA=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`CONSISTS_OF`]->(n2)\\n        ' {'subj': 'Paleolithic diet', 'obj': 'roots'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA6pA=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`CONSISTS_OF`]->(n2)\\n        ' {'subj': 'Paleolithic diet', 'obj': 'meat'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA65A=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`EXCLUDES`]->(n2)\\n        ' {'subj': 'Paleolithic diet', 'obj': 'dairy products'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 14, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA7ZA=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`EXCLUDES`]->(n2)\\n        ' {'subj': 'Paleolithic diet', 'obj': 'grains'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 14, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA7pA=', 'stats': {'contains-updates': True, 'relationships-created': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`EXCLUDES`]->(n2)\\n        ' {'subj': 'Paleolithic diet', 'obj': 'sugar'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA75A=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`EXCLUDES`]->(n2)\\n        ' {'subj': 'Paleolithic diet', 'obj': 'legumes'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 0, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:httpx:load_ssl_context verify=True cert=None trust_env=True http2=False\n",
      "DEBUG:httpx:load_verify_locations cafile='/Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages/certifi/cacert.pem'\n",
      "DEBUG:httpx:load_ssl_context verify=True cert=None trust_env=True http2=False\n",
      "DEBUG:httpx:load_verify_locations cafile='/Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages/certifi/cacert.pem'\n",
      "DEBUG:httpx:load_ssl_context verify=True cert=None trust_env=True http2=False\n",
      "DEBUG:httpx:load_verify_locations cafile='/Users/minp/miniconda3/envs/llamaindex_nebulagraph_phillies/lib/python3.11/site-packages/certifi/cacert.pem'\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/embeddings', 'files': None, 'post_parser': <function Embeddings.create.<locals>.parser at 0x14f20d120>, 'json_data': {'input': [\"('Paleolithic diet', 'is', 'fad diet')\", \"('Paleolithic diet', 'consists of', 'vegetables')\", \"('Paleolithic diet', 'consists of', 'fruits')\", \"('Paleolithic diet', 'consists of', 'nuts')\", \"('Paleolithic diet', 'consists of', 'roots')\", \"('Paleolithic diet', 'consists of', 'meat')\", \"('Paleolithic diet', 'excludes', 'dairy products')\", \"('Paleolithic diet', 'excludes', 'grains')\", \"('Paleolithic diet', 'excludes', 'sugar')\", \"('Paleolithic diet', 'excludes', 'legumes')\"], 'model': <OpenAIEmbeddingModeModel.TEXT_EMBED_ADA_002: 'text-embedding-ada-002'>, 'encoding_format': 'base64'}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.connection:connect_tcp.started host='127.0.0.1' port=7890 local_address=None timeout=5.0 socket_options=None\n",
      "DEBUG:httpcore.connection:connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x14ed01150>\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'CONNECT']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'CONNECT']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'CONNECT']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'Connection established', [])\n",
      "DEBUG:httpcore.proxy:start_tls.started ssl_context=<ssl.SSLContext object at 0x14d1f7530> server_hostname='firstaiproject.openai.azure.com' timeout=5.0\n",
      "DEBUG:httpcore.proxy:start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x14d4c8d90>\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Length', b'82865'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'x-content-type-options', b'nosniff'), (b'x-ratelimit-remaining-requests', b'117'), (b'apim-request-id', b'19f11c7b-7848-4c0e-9f56-ecb527956a88'), (b'x-ratelimit-remaining-tokens', b'114371'), (b'x-request-id', b'40e290fa-f645-4bd1-8ea6-3015b99ff9ed'), (b'x-ms-client-request-id', b'19f11c7b-7848-4c0e-9f56-ecb527956a88'), (b'x-ms-region', b'East US'), (b'azureml-model-session', b'wd3a5f6e70955-2'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Date', b'Thu, 28 Dec 2023 09:04:16 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/deployments/gpt-35-turbo-16k/chat/completions', 'files': None, 'json_data': {'messages': [{'role': <MessageRole.USER: 'user'>, 'content': 'Some text is provided below. Given the text, extract up to 10 knowledge triplets in the form of (subject, predicate, object). Avoid stopwords.\\n---------------------\\nExample:Text: Alice is Bob\\'s mother.Triplets:\\n(Alice, is mother of, Bob)\\nText: Philz is a coffee shop founded in Berkeley in 1982.\\nTriplets:\\n(Philz, is, coffee shop)\\n(Philz, founded in, Berkeley)\\n(Philz, founded in, 1982)\\n---------------------\\nText: == Foodstuffs ==\\nThe basis of the diet is a re-imagining of what Paleolithic people ate, and different proponents recommend different diet compositions. Eaton and Konner, for example, wrote a 1988 book The Paleolithic Prescription with Marjorie Shostak, and it described a diet that is 65% plant-based. This is not typical of more recently devised paleo diets; Loren Cordain\\'s – probably the most popular – instead emphasizes animal products and avoidance of processed food. Diet advocates concede the modern paleolithic diet cannot be a faithful recreation of what paleolithic people ate, and instead aim to \"translate\" that into a modern context, avoiding such likely historical practices as cannibalism.Foodstuffs that have been described as permissible include:\\n\\n\"vegetables, fruits, nuts, roots, meat, and organ meats\";\\n\"vegetables (including root vegetables), fruit (including fruit oils, e.g., olive oil, coconut oil, and palm oil), nuts, fish, meat, and eggs, and it excluded dairy, grain-based foods, legumes, extra sugar, and nutritional products of industry (including refined fats and refined carbohydrates)\"; and\\n\"avoids processed foods, and emphasizes eating vegetables, fruits, nuts and seeds, eggs, and lean meats\".The diet forbids the consumption of all dairy products. This is because milking did not exist until animals were domesticated after the Paleolithic era.\\n\\n\\n=== Ancestral diet ===\\n\\nAdopting the Paleolithic diet assumes that modern humans can reproduce the hunter-gatherer diet. Molecular biologist Marion Nestle argues that \"knowledge of the relative proportions of animal and plant foods in the diets of early humans is circumstantial, incomplete, and debatable and that there are insufficient data to identify the composition of a genetically determined optimal diet. The evidence related to Paleolithic diets is best interpreted as supporting the idea that diets based largely on plant foods promote health and longevity, at least under conditions of food abundance and physical activity.\" Ideas about Paleolithic diet and nutrition are at best hypothetical.The data for Cordain\\'s book only came from six contemporary hunter-gatherer groups, mainly living in marginal habitats. One of the studies was on the !Kung, whose diet was recorded for a single month, and one was on the Inuit. Due to these limitations, the book has been criticized as painting an incomplete picture of the diets of Paleolithic humans. It has been noted that the rationale for the diet does not adequately account for the fact that, due to the pressures of artificial selection, most modern domesticated plants and animals differ drastically from their Paleolithic ancestors; likewise, their nutritional profiles are very different from their ancient counterparts. For example, wild almonds produce potentially fatal levels of cyanide, but this trait has been bred out of domesticated varieties using artificial selection. Many vegetables, such as broccoli, did not exist in the Paleolithic period; broccoli, cabbage, cauliflower, and kale are modern cultivars of the ancient species Brassica oleracea.Trying to devise an ideal diet by studying contemporary hunter-gatherers is difficult because of the great disparities that exist; for example, the animal-derived calorie percentage ranges from 25% for the Gwi people of southern Africa to 99% for the Alaskan Nunamiut. Descendants of populations with different diets have different genetic adaptations to those diets, such as the ability to digest sugars from starchy foods. Modern hunter-gatherers tend to exercise considerably more than modern office workers, protecting them from heart disease and diabetes, though highly processed modern foods also contribute to diabetes when those populations move into cities.A 2018 review of the diet of hunter-gatherer populations found that the dietary provisions of the paleolithic diet had been based on questionable research, and were \"difficult to reconcile with more detailed ethnographic and nutritional studies of hunter-gatherer diet\".Researchers have proposed that cooked starches met the energy demands of an increasing brain size, based on variations in the copy number of genes encoding amylase.\\nTriplets:\\n'}], 'model': 'gpt-35-turbo-16k', 'stream': False, 'temperature': 0.1}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Cache-Control', b'no-cache, must-revalidate'), (b'Content-Length', b'1216'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'apim-request-id', b'87ba9808-5c19-4977-b581-fa77eeefdaa6'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'x-content-type-options', b'nosniff'), (b'x-ms-region', b'East US'), (b'x-ratelimit-remaining-requests', b'116'), (b'x-ratelimit-remaining-tokens', b'119856'), (b'x-accel-buffering', b'no'), (b'x-request-id', b'1e42c669-a87c-43b2-80d6-f12e072a6757'), (b'x-ms-client-request-id', b'87ba9808-5c19-4977-b581-fa77eeefdaa6'), (b'azureml-model-session', b'turbo-0613-b28806f7'), (b'Date', b'Thu, 28 Dec 2023 09:04:18 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:llama_index.indices.knowledge_graph.base:> Extracted triplets: [('Foodstuffs', 'is', 'basis of diet'), ('diet', 'is', 're-imagining of what Paleolithic people ate'), ('proponents', 'recommend', 'different diet compositions'), ('Eaton and Konner', 'wrote', 'The Paleolithic Prescription'), ('book', 'described', 'diet'), ('diet', 'is', '65% plant-based'), ('paleo diets', 'emphasizes', 'animal products'), ('paleo diets', 'avoidance of', 'processed food'), ('diet advocates', 'aim to', '\"translate\" into modern context'), ('diet', 'forbids', 'consumption of all dairy products')]\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS`]->(n2)\\n        ' {'subj': 'Foodstuffs', 'obj': 'basis of diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 31, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS`]->(n2)\\n        ' {'subj': 'diet', 'obj': 're-imagining of what Paleolithic people ate'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`RECOMMEND`]->(n2)\\n        ' {'subj': 'proponents', 'obj': 'different diet compositions'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 17, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`WROTE`]->(n2)\\n        ' {'subj': 'Eaton and Konner', 'obj': 'The Paleolithic Prescription'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 16, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`DESCRIBED`]->(n2)\\n        ' {'subj': 'book', 'obj': 'diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 15, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS`]->(n2)\\n        ' {'subj': 'diet', 'obj': '65% plant-based'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 0, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`EMPHASIZES`]->(n2)\\n        ' {'subj': 'paleo diets', 'obj': 'animal products'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 16, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`AVOIDANCE_OF`]->(n2)\\n        ' {'subj': 'paleo diets', 'obj': 'processed food'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 14, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`AIM_TO`]->(n2)\\n        ' {'subj': 'diet advocates', 'obj': '\"translate\" into modern context'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 12, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`FORBIDS`]->(n2)\\n        ' {'subj': 'diet', 'obj': 'consumption of all dairy products'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 10, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/embeddings', 'files': None, 'post_parser': <function Embeddings.create.<locals>.parser at 0x14f20da80>, 'json_data': {'input': [\"('Foodstuffs', 'is', 'basis of diet')\", \"('diet', 'is', 're-imagining of what Paleolithic people ate')\", \"('proponents', 'recommend', 'different diet compositions')\", \"('Eaton and Konner', 'wrote', 'The Paleolithic Prescription')\", \"('book', 'described', 'diet')\", \"('diet', 'is', '65% plant-based')\", \"('paleo diets', 'emphasizes', 'animal products')\", \"('paleo diets', 'avoidance of', 'processed food')\", '(\\'diet advocates\\', \\'aim to\\', \\'\"translate\" into modern context\\')', \"('diet', 'forbids', 'consumption of all dairy products')\"], 'model': <OpenAIEmbeddingModeModel.TEXT_EMBED_ADA_002: 'text-embedding-ada-002'>, 'encoding_format': 'base64'}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Length', b'82865'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'x-content-type-options', b'nosniff'), (b'x-ratelimit-remaining-requests', b'117'), (b'apim-request-id', b'40a659bb-c73a-48ef-81c0-645250f8735b'), (b'x-ratelimit-remaining-tokens', b'114242'), (b'x-request-id', b'55a1cc1f-bc30-4055-9679-1f63c6296173'), (b'x-ms-client-request-id', b'40a659bb-c73a-48ef-81c0-645250f8735b'), (b'x-ms-region', b'East US'), (b'azureml-model-session', b'wd3a5f6e70955-8'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Date', b'Thu, 28 Dec 2023 09:04:18 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/deployments/gpt-35-turbo-16k/chat/completions', 'files': None, 'json_data': {'messages': [{'role': <MessageRole.USER: 'user'>, 'content': 'Some text is provided below. Given the text, extract up to 10 knowledge triplets in the form of (subject, predicate, object). Avoid stopwords.\\n---------------------\\nExample:Text: Alice is Bob\\'s mother.Triplets:\\n(Alice, is mother of, Bob)\\nText: Philz is a coffee shop founded in Berkeley in 1982.\\nTriplets:\\n(Philz, is, coffee shop)\\n(Philz, founded in, Berkeley)\\n(Philz, founded in, 1982)\\n---------------------\\nText: == Health effects ==\\nThe paleolithic diet is controversial in part because of the exaggerated health claims made for it by its supporters. In general, methodological quality of research into the diet has been poor to moderate.The aspects of the paleolithic diet that result in eating fewer processed foods and less sugar and salt are consistent with mainstream advice about diet. Diets with a paleolithic nutrition pattern have some similarities to traditional ethnic diets such as the Mediterranean diet that have been found to be healthier than the Western diet. Following the paleolithic diet, however, can lead to nutritional deficiencies such as those of vitamin D and calcium, which in turn could lead to compromised bone health; it can also lead to an increased risk of ingesting toxins from high fish consumption.There is some evidence the diet helps achieve weight loss, possibly because of the increased satiety from the foods typically eaten. One trial of obese postmenopausal women found improvements in weight and fat loss after six months, but the benefits had ceased by 24 months; side effects among participants included \"weakness, diarrhea, and headaches\". As with any other diet regime, the paleolithic diet leads to weight loss because of overall decreased caloric intake, rather than a special feature of the diet itself.There is no good evidence that following a paleolithic diet lessens the risk of cardiovascular disease or metabolic syndrome. There is no evidence the paleolithic diet is effective in treating inflammatory bowel disease.The paleolithic diet similar to the Atkins diet encourages the consumption of large amounts of red meat, especially meats high in saturated fat. This has a negative effect on health in the long run as medical studies have shown that it can lead to increased incidence of cardiovascular disease.\\nTriplets:\\n'}], 'model': 'gpt-35-turbo-16k', 'stream': False, 'temperature': 0.1}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Cache-Control', b'no-cache, must-revalidate'), (b'Content-Length', b'1329'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'apim-request-id', b'b333165a-f8fd-4bd3-aad0-371beb787c91'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'x-content-type-options', b'nosniff'), (b'x-ms-region', b'East US'), (b'x-ratelimit-remaining-requests', b'115'), (b'x-ratelimit-remaining-tokens', b'119840'), (b'x-accel-buffering', b'no'), (b'x-request-id', b'0edd8820-0457-4caf-9f86-6b7b9c031b2d'), (b'x-ms-client-request-id', b'b333165a-f8fd-4bd3-aad0-371beb787c91'), (b'azureml-model-session', b'turbo-0613-41972b62'), (b'Date', b'Thu, 28 Dec 2023 09:04:20 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:llama_index.indices.knowledge_graph.base:> Extracted triplets: [('paleolithic diet', 'is controversial in', 'part'), ('paleolithic diet', 'result in', 'eating fewer processed foods'), ('paleolithic diet', 'result in', 'eating less sugar'), ('paleolithic diet', 'result in', 'eating less salt'), ('paleolithic diet', 'have similarities to', 'Mediterranean diet'), ('paleolithic diet', 'have similarities to', 'traditional ethnic diets'), ('paleolithic diet', 'can lead to', 'nutritional deficiencies'), ('paleolithic diet', 'can lead to', 'compromised bone health'), ('paleolithic diet', 'can lead to', 'increased risk of ingesting toxins'), ('paleolithic diet', 'helps achieve', 'weight loss')]\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS_CONTROVERSIAL_IN`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'part'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 29, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`RESULT_IN`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'eating fewer processed foods'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`RESULT_IN`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'eating less sugar'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`RESULT_IN`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'eating less salt'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 3, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAVE_SIMILARITIES_TO`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'Mediterranean diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAVE_SIMILARITIES_TO`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'traditional ethnic diets'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`CAN_LEAD_TO`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'nutritional deficiencies'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 0, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`CAN_LEAD_TO`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'compromised bone health'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`CAN_LEAD_TO`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'increased risk of ingesting toxins'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HELPS_ACHIEVE`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'weight loss'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 19, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/embeddings', 'files': None, 'post_parser': <function Embeddings.create.<locals>.parser at 0x14f20d440>, 'json_data': {'input': [\"('paleolithic diet', 'is controversial in', 'part')\", \"('paleolithic diet', 'result in', 'eating fewer processed foods')\", \"('paleolithic diet', 'result in', 'eating less sugar')\", \"('paleolithic diet', 'result in', 'eating less salt')\", \"('paleolithic diet', 'have similarities to', 'Mediterranean diet')\", \"('paleolithic diet', 'have similarities to', 'traditional ethnic diets')\", \"('paleolithic diet', 'can lead to', 'nutritional deficiencies')\", \"('paleolithic diet', 'can lead to', 'compromised bone health')\", \"('paleolithic diet', 'can lead to', 'increased risk of ingesting toxins')\", \"('paleolithic diet', 'helps achieve', 'weight loss')\"], 'model': <OpenAIEmbeddingModeModel.TEXT_EMBED_ADA_002: 'text-embedding-ada-002'>, 'encoding_format': 'base64'}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Length', b'82865'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'x-content-type-options', b'nosniff'), (b'x-ratelimit-remaining-requests', b'117'), (b'apim-request-id', b'db8e1da5-7a3b-46ef-b83d-d2a2d55954d6'), (b'x-ratelimit-remaining-tokens', b'114085'), (b'x-request-id', b'a7a54e1c-07a0-4647-a2fe-805fa13e3da3'), (b'x-ms-client-request-id', b'db8e1da5-7a3b-46ef-b83d-d2a2d55954d6'), (b'x-ms-region', b'East US'), (b'azureml-model-session', b'wd3a5f6e70955-1'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Date', b'Thu, 28 Dec 2023 09:04:21 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/deployments/gpt-35-turbo-16k/chat/completions', 'files': None, 'json_data': {'messages': [{'role': <MessageRole.USER: 'user'>, 'content': 'Some text is provided below. Given the text, extract up to 10 knowledge triplets in the form of (subject, predicate, object). Avoid stopwords.\\n---------------------\\nExample:Text: Alice is Bob\\'s mother.Triplets:\\n(Alice, is mother of, Bob)\\nText: Philz is a coffee shop founded in Berkeley in 1982.\\nTriplets:\\n(Philz, is, coffee shop)\\n(Philz, founded in, Berkeley)\\n(Philz, founded in, 1982)\\n---------------------\\nText: == Genetics ==\\nThe stated rationale for the paleolithic diet is that human genes of modern times are unchanged from those of 10,000 years ago, and that the diet of that time is therefore the best fit with humans today. Loren Cordain has described the paleo diet as \"the one and only diet that ideally fits our genetic makeup\".The argument is that modern humans have not been able to adapt to the new circumstances. According to Cordain, before the agricultural revolution, hunter-gatherer diets rarely included grains, and obtaining milk from wild animals would have been \"nearly impossible\". Advocates of the diet argue that the increase in diseases of affluence after the dawn of agriculture was caused by these changes in diet, but others have countered that it may be that pre-agricultural hunter-gatherers did not suffer from the diseases of affluence because they did not live long enough to develop them.According to the model from the evolutionary discordance hypothesis, \"many chronic diseases and degenerative conditions evident in modern Western populations have arisen because of a mismatch between Stone Age genes and modern lifestyles.\" Advocates of the modern paleo diet have formed their dietary recommendations based on this hypothesis. They argue that modern humans should follow a diet that is nutritionally closer to that of their Paleolithic ancestors.\\nThe evolutionary discordance is incomplete, since it is based mainly on the genetic understanding of the human diet and a unique model of human ancestral diets, without taking into account the flexibility and variability of the human dietary behaviors over time. Studies of a variety of populations around the world show that humans can live healthily with a wide variety of diets and that humans have evolved to be flexible eaters. Lactase persistence, which confers lactose tolerance into adulthood, is an example of how some humans have adapted to the introduction of dairy into their diet. While the introduction of grains, dairy, and legumes during the Neolithic revolution may have had some adverse effects on modern humans, if humans had not been nutritionally adaptable, these technological developments would have been dropped.Since the publication of Eaton and Konner\\'s paper in 1985, analysis of the DNA of primitive human remains has provided evidence that evolving humans were continually adapting to new diets, thus challenging the hypothesis underlying the paleothic diet. Evolutionary biologist Marlene Zuk writes that the idea that our genetic makeup today matches that of our ancestors is misconceived, and that in debate Cordain was \"taken aback\" when told that 10,000 years was \"plenty of time\" for an evolutionary change in human digestive abilities to have taken place. On this basis Zuk dismisses Cordain\\'s claim that the paleo diet is \"the one and only diet that fits our genetic makeup\".Paleoanthropologist Peter Ungar has written that the paleo diet is a \"myth\", on account both of its invocation of a single suitable diet when in reality humans have always been a \"work in progress\", and because diet has always been varied because humans were spread widely over the planet.Anthropological geneticist Anne C. Stone has said that humans have adapted in the last 10,000 years in response to radical changes in diet. In 2016, she was quoted as saying \"It drives me crazy when Paleo-diet people say that we\\'ve stopped evolving—we haven\\'t\".Melvin Konner has said the challenge to the hypothesis is not greatly significant since the real challenges to human non-adaptation have occurred with the rise of ever-more refined foodstuffs in the last 300 years.\\n\\n\\n== Environmental impact ==\\nA 2019 analysis of diets in the United States ranked consumption of a paleolithic diet as more environmentally harmful than consumption of an omnivorous diet, though not so harmful as a ketogenic diet.Elizabeth Kolbert has written the paleolithic diet\\'s emphasis on meat consumption is a \"disaster\" on account of meat\\'s comparatively high energy production costs.\\n\\n\\n== Popularity ==\\nA lifestyle and ideology have developed around the diet. \"Paleolithic\" products include clothing, smartphone apps, and cookware. Many paleolithic cookery books have been bestsellers.As of 2019 the market for products with the word \"Paleo\" in their name was worth approximately $US500\\u2009million, with strong growth prospects despite pushback from the scientific community. Some products were taking advantage of the trend by touting themselves as \"paleo-approved\" despite having no apparent link to the movement\\'s tenets.Like many other diets, the paleolithic diet is promoted by some by an appeal to nature and a narrative of conspiracy theories about how nutritional research, which does not support the supposed benefits of the paleolithic diet, is controlled by a malign food industry. Paleolithic diet advocate John Durant has blamed suppression of the truth about diet in the United States on \"the vegetarian lobby\".\\n\\n\\n== See also ==\\n\\n\\n== Citations ==\\n\\n\\n== References ==\\n\\n\\n== Further reading ==\\nTriplets:\\n'}], 'model': 'gpt-35-turbo-16k', 'stream': False, 'temperature': 0.1}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Cache-Control', b'no-cache, must-revalidate'), (b'Content-Length', b'1329'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'apim-request-id', b'10ddc872-6a6e-4e93-b3e5-7426f74baf68'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'x-content-type-options', b'nosniff'), (b'x-ms-region', b'East US'), (b'x-ratelimit-remaining-requests', b'116'), (b'x-ratelimit-remaining-tokens', b'119824'), (b'x-accel-buffering', b'no'), (b'x-request-id', b'4a983523-5e54-4978-a9e4-940ccd23ce3b'), (b'x-ms-client-request-id', b'10ddc872-6a6e-4e93-b3e5-7426f74baf68'), (b'azureml-model-session', b'turbo-0613-f3706795'), (b'Date', b'Thu, 28 Dec 2023 09:04:24 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:llama_index.indices.knowledge_graph.base:> Extracted triplets: [('Genetics', 'is', 'rationale'), ('paleolithic diet', 'is', 'best fit'), ('Loren Cordain', 'described as', 'paleo diet'), ('hunter-gatherer diets', 'rarely included', 'grains'), ('obtaining milk', 'would have been', 'nearly impossible'), ('increase in diseases', 'caused by', 'changes in diet'), ('pre-agricultural hunter-gatherers', 'did not suffer from', 'diseases of affluence'), ('chronic diseases', 'have arisen because of', 'mismatch between Stone Age genes and modern lifestyles'), ('modern humans', 'should follow', 'diet'), ('humans', 'have evolved to be', 'flexible eaters')]\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS`]->(n2)\\n        ' {'subj': 'Genetics', 'obj': 'rationale'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS`]->(n2)\\n        ' {'subj': 'paleolithic diet', 'obj': 'best fit'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`DESCRIBED_AS`]->(n2)\\n        ' {'subj': 'Loren Cordain', 'obj': 'paleo diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`RARELY_INCLUDED`]->(n2)\\n        ' {'subj': 'hunter-gatherer diets', 'obj': 'grains'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`WOULD_HAVE_BEEN`]->(n2)\\n        ' {'subj': 'obtaining milk', 'obj': 'nearly impossible'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`CAUSED_BY`]->(n2)\\n        ' {'subj': 'increase in diseases', 'obj': 'changes in diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`DID_NOT_SUFFER_FROM`]->(n2)\\n        ' {'subj': 'pre-agricultural hunter-gatherers', 'obj': 'diseases of affluence'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 2, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAVE_ARISEN_BECAUSE_OF`]->(n2)\\n        ' {'subj': 'chronic diseases', 'obj': 'mismatch between Stone Age genes and modern lifestyles'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 23, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA8pA=', 'stats': {'contains-updates': True, 'labels-added': 1, 'relationships-created': 1, 'nodes-created': 1, 'properties-set': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`SHOULD_FOLLOW`]->(n2)\\n        ' {'subj': 'modern humans', 'obj': 'diet'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 15, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA9JA=', 'stats': {'contains-updates': True, 'relationships-created': 1}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAVE_EVOLVED_TO_BE`]->(n2)\\n        ' {'subj': 'humans', 'obj': 'flexible eaters'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA9JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/embeddings', 'files': None, 'post_parser': <function Embeddings.create.<locals>.parser at 0x14f20e020>, 'json_data': {'input': [\"('Genetics', 'is', 'rationale')\", \"('paleolithic diet', 'is', 'best fit')\", \"('Loren Cordain', 'described as', 'paleo diet')\", \"('hunter-gatherer diets', 'rarely included', 'grains')\", \"('obtaining milk', 'would have been', 'nearly impossible')\", \"('increase in diseases', 'caused by', 'changes in diet')\", \"('pre-agricultural hunter-gatherers', 'did not suffer from', 'diseases of affluence')\", \"('chronic diseases', 'have arisen because of', 'mismatch between Stone Age genes and modern lifestyles')\", \"('modern humans', 'should follow', 'diet')\", \"('humans', 'have evolved to be', 'flexible eaters')\"], 'model': <OpenAIEmbeddingModeModel.TEXT_EMBED_ADA_002: 'text-embedding-ada-002'>, 'encoding_format': 'base64'}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Length', b'82865'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'x-content-type-options', b'nosniff'), (b'x-ratelimit-remaining-requests', b'116'), (b'apim-request-id', b'dd1642f9-2e63-4851-8c02-f2504412c815'), (b'x-ratelimit-remaining-tokens', b'113940'), (b'x-request-id', b'f4fd39b4-3c6d-4af4-a8ae-74cb2966285b'), (b'x-ms-client-request-id', b'dd1642f9-2e63-4851-8c02-f2504412c815'), (b'x-ms-region', b'East US'), (b'azureml-model-session', b'wd3a5f6e70955-1'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Date', b'Thu, 28 Dec 2023 09:04:24 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/deployments/gpt-35-turbo-16k/chat/completions', 'files': None, 'json_data': {'messages': [{'role': <MessageRole.USER: 'user'>, 'content': \"Some text is provided below. Given the text, extract up to 10 knowledge triplets in the form of (subject, predicate, object). Avoid stopwords.\\n---------------------\\nExample:Text: Alice is Bob's mother.Triplets:\\n(Alice, is mother of, Bob)\\nText: Philz is a coffee shop founded in Berkeley in 1982.\\nTriplets:\\n(Philz, is, coffee shop)\\n(Philz, founded in, Berkeley)\\n(Philz, founded in, 1982)\\n---------------------\\nText: == See also ==\\n\\n\\n== Citations ==\\n\\n\\n== References ==\\n\\n\\n== Further reading ==\\n\\n\\n== External links ==\\nHuman Timeline (Interactive) – Smithsonian, National Museum of Natural History (August 2016).\\nTriplets:\\n\"}], 'model': 'gpt-35-turbo-16k', 'stream': False, 'temperature': 0.1}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Cache-Control', b'no-cache, must-revalidate'), (b'Content-Length', b'914'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'apim-request-id', b'5b1e4449-58e5-4e84-b02b-2506dd817a53'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'x-content-type-options', b'nosniff'), (b'x-ms-region', b'East US'), (b'x-ratelimit-remaining-requests', b'116'), (b'x-ratelimit-remaining-tokens', b'119808'), (b'x-accel-buffering', b'no'), (b'x-request-id', b'cbeeb4dc-6f0b-4e8e-acd7-f6feb3f554a7'), (b'x-ms-client-request-id', b'5b1e4449-58e5-4e84-b02b-2506dd817a53'), (b'azureml-model-session', b'turbo-0613-9e2e75c5'), (b'Date', b'Thu, 28 Dec 2023 09:04:26 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:llama_index.indices.knowledge_graph.base:> Extracted triplets: [('Smithsonian', 'is', 'National Museum of Natural History'), ('Smithsonian', 'has', 'Human Timeline'), ('Smithsonian', 'has', 'Interactive'), ('Smithsonian', 'has', 'August 2016')]\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`IS`]->(n2)\\n        ' {'subj': 'Smithsonian', 'obj': 'National Museum of Natural History'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 4, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA9JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAS`]->(n2)\\n        ' {'subj': 'Smithsonian', 'obj': 'Human Timeline'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA9JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAS`]->(n2)\\n        ' {'subj': 'Smithsonian', 'obj': 'Interactive'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA9JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN '\\n            MERGE (n1:`Entity` {id:$subj})\\n            MERGE (n2:`Entity` {id:$obj})\\n            MERGE (n1)-[:`HAS`]->(n2)\\n        ' {'subj': 'Smithsonian', 'obj': 'August 2016'} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': []}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA9JA=', 'type': 'w', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/embeddings', 'files': None, 'post_parser': <function Embeddings.create.<locals>.parser at 0x14f410540>, 'json_data': {'input': [\"('Smithsonian', 'is', 'National Museum of Natural History')\", \"('Smithsonian', 'has', 'Human Timeline')\", \"('Smithsonian', 'has', 'Interactive')\", \"('Smithsonian', 'has', 'August 2016')\"], 'model': <OpenAIEmbeddingModeModel.TEXT_EMBED_ADA_002: 'text-embedding-ada-002'>, 'encoding_format': 'base64'}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Length', b'33219'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'x-content-type-options', b'nosniff'), (b'x-ratelimit-remaining-requests', b'116'), (b'apim-request-id', b'b3d6cdcf-02e5-4592-91e7-e739975036b1'), (b'x-ratelimit-remaining-tokens', b'113895'), (b'x-request-id', b'bfadac80-2c3e-4986-9306-83ae4b7bcdf7'), (b'x-ms-client-request-id', b'b3d6cdcf-02e5-4592-91e7-e739975036b1'), (b'x-ms-region', b'East US'), (b'azureml-model-session', b'wd3a5f6e70955-7'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Date', b'Thu, 28 Dec 2023 09:04:26 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: The Paleolithic diet, Paleo diet, caveman diet,...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: == History and terminology ==\n",
      "Adrienne Rose Joh...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: == Foodstuffs ==\n",
      "The basis of the diet is a re-...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: Molecular biologist Marion Nestle argues that \"...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: Descendants of populations with different diets...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: == Genetics ==\n",
      "The stated rationale for the pal...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: Studies of a variety of populations around the ...\n",
      "DEBUG:llama_index.node_parser.node_utils:> Adding chunk: In 2016, she was quoted as saying \"It drives me...\n",
      "loaded nodes with 8 nodes\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/embeddings', 'files': None, 'post_parser': <function Embeddings.create.<locals>.parser at 0x14f20d580>, 'json_data': {'input': ['The Paleolithic diet, Paleo diet, caveman diet, or stone-age diet is a modern fad diet consisting of foods thought by its proponents to mirror those eaten by humans during the Paleolithic era.The diet avoids food processing and typically includes vegetables, fruits, nuts, roots, and meat and excludes dairy products, grains, sugar, legumes, processed oils, salt, alcohol, and coffee. Historians can trace the ideas behind the diet to \"primitive\" diets advocated in 19th century. In the 1970s, Walter L. Voegtlin popularized a meat-centric \"Stone Age\" diet; in the 21st century the best-selling books of Loren Cordain popularized the Paleo diet. As of 2019 the paleo-diet industry was worth approximately US$500 million.In the 21st century, the sequencing of the human genome and DNA analysis of the remains of early humans have found evidence that humans evolved rapidly in response to changing diet. This evidence undermines a core premise of the paleolithic diet – that human digestion has remained essentially unchanged over time. Anthropological science has found that human diets in paleolithic times were more varied and less meat-centric than had previously been assumed. Advocates promote the paleolithic diet as a way of improving health. There is some evidence that following it may lead to improvements in body composition and metabolism compared with the typical Western diet or compared with diets recommended by some European nutritional guidelines. On the other hand, following the diet can lead to nutritional deficiencies such as an inadequate calcium intake, and side effects can include weakness, diarrhea, and headaches.', '== History and terminology == Adrienne Rose Johnson writes that the idea that the primitive diet was superior to current dietary habits dates back to the 1890s with such writers as Emmet Densmore and John Harvey Kellogg. Densmore proclaimed that \"bread is the staff of death\", while Kellogg supported a diet of starchy and grain-based foods in accord with \"the ways and likings of our primitive ancestors\". Arnold DeVries advocated an early version of the Paleolithic diet in his 1952 book, Primitive Man and His Food. In 1958, Richard Mackarness authored Eat Fat and Grow Slim, which proposed a low-carbohydrate \"Stone Age\" diet.In his 1975 book The Stone Age Diet, gastroenterologist Walter L. Voegtlin advocated a meat-based diet, with low proportions of vegetables and starchy foods, based on his declaration that humans were \"exclusively flesh-eaters\" until 10,000 years ago.In 1985 Stanley Boyd Eaton and Melvin Konner published a controversial article in the New England Journal of Medicine proposing that modern humans were biologically very similar to their primitive ancestors and so \"genetically programmed\" to consume pre-agricultural foods. Eaton and Konner proposed a \"discordance hypothesis\" by which the mismatch between modern diet and human biology gave rise to lifestyle diseases, such as obesity and diabetes.The diet started to become popular in the 21st century, where it attracted a largely internet-based following using web sites, forums and social media.This diet\\'s ideas were further popularized by Loren Cordain, a health scientist with a Ph.D. in physical education, who trademarked the words \"The Paleo Diet\" and who wrote a 2002 book of that title.In 2012 the paleolithic diet was described as being one of the \"latest trends\" in diets, based on the popularity of diet books about it; in 2013 and 2014 the Paleolithic diet was Google\\'s most searched weight-loss method.The paleolithic or paleo diet is also sometimes referred to as the caveman or stone-age diet.', '== Foodstuffs == The basis of the diet is a re-imagining of what Paleolithic people ate, and different proponents recommend different diet compositions. Eaton and Konner, for example, wrote a 1988 book The Paleolithic Prescription with Marjorie Shostak, and it described a diet that is 65% plant-based. This is not typical of more recently devised paleo diets; Loren Cordain\\'s – probably the most popular – instead emphasizes animal products and avoidance of processed food. Diet advocates concede the modern paleolithic diet cannot be a faithful recreation of what paleolithic people ate, and instead aim to \"translate\" that into a modern context, avoiding such likely historical practices as cannibalism.Foodstuffs that have been described as permissible include:  \"vegetables, fruits, nuts, roots, meat, and organ meats\"; \"vegetables (including root vegetables), fruit (including fruit oils, e.g., olive oil, coconut oil, and palm oil), nuts, fish, meat, and eggs, and it excluded dairy, grain-based foods, legumes, extra sugar, and nutritional products of industry (including refined fats and refined carbohydrates)\"; and \"avoids processed foods, and emphasizes eating vegetables, fruits, nuts and seeds, eggs, and lean meats\".The diet forbids the consumption of all dairy products. This is because milking did not exist until animals were domesticated after the Paleolithic era.   === Ancestral diet ===  Adopting the Paleolithic diet assumes that modern humans can reproduce the hunter-gatherer diet. Molecular biologist Marion Nestle argues that \"knowledge of the relative proportions of animal and plant foods in the diets of early humans is circumstantial, incomplete, and debatable and that there are insufficient data to identify the composition of a genetically determined optimal diet. The evidence related to Paleolithic diets is best interpreted as supporting the idea that diets based largely on plant foods promote health and longevity, at least under conditions of food abundance and physical activity.\" Ideas about Paleolithic diet and nutrition are at best hypothetical.The data for Cordain\\'s book only came from six contemporary hunter-gatherer groups, mainly living in marginal habitats. One of the studies was on the !Kung, whose diet was recorded for a single month, and one was on the Inuit. Due to these limitations, the book has been criticized as painting an incomplete picture of the diets of Paleolithic humans.', 'Molecular biologist Marion Nestle argues that \"knowledge of the relative proportions of animal and plant foods in the diets of early humans is circumstantial, incomplete, and debatable and that there are insufficient data to identify the composition of a genetically determined optimal diet. The evidence related to Paleolithic diets is best interpreted as supporting the idea that diets based largely on plant foods promote health and longevity, at least under conditions of food abundance and physical activity.\" Ideas about Paleolithic diet and nutrition are at best hypothetical.The data for Cordain\\'s book only came from six contemporary hunter-gatherer groups, mainly living in marginal habitats. One of the studies was on the !Kung, whose diet was recorded for a single month, and one was on the Inuit. Due to these limitations, the book has been criticized as painting an incomplete picture of the diets of Paleolithic humans. It has been noted that the rationale for the diet does not adequately account for the fact that, due to the pressures of artificial selection, most modern domesticated plants and animals differ drastically from their Paleolithic ancestors; likewise, their nutritional profiles are very different from their ancient counterparts. For example, wild almonds produce potentially fatal levels of cyanide, but this trait has been bred out of domesticated varieties using artificial selection. Many vegetables, such as broccoli, did not exist in the Paleolithic period; broccoli, cabbage, cauliflower, and kale are modern cultivars of the ancient species Brassica oleracea.Trying to devise an ideal diet by studying contemporary hunter-gatherers is difficult because of the great disparities that exist; for example, the animal-derived calorie percentage ranges from 25% for the Gwi people of southern Africa to 99% for the Alaskan Nunamiut. Descendants of populations with different diets have different genetic adaptations to those diets, such as the ability to digest sugars from starchy foods. Modern hunter-gatherers tend to exercise considerably more than modern office workers, protecting them from heart disease and diabetes, though highly processed modern foods also contribute to diabetes when those populations move into cities.A 2018 review of the diet of hunter-gatherer populations found that the dietary provisions of the paleolithic diet had been based on questionable research, and were \"difficult to reconcile with more detailed ethnographic and nutritional studies of hunter-gatherer diet\".Researchers have proposed that cooked starches met the energy demands of an increasing brain size, based on variations in the copy number of genes encoding amylase.', 'Descendants of populations with different diets have different genetic adaptations to those diets, such as the ability to digest sugars from starchy foods. Modern hunter-gatherers tend to exercise considerably more than modern office workers, protecting them from heart disease and diabetes, though highly processed modern foods also contribute to diabetes when those populations move into cities.A 2018 review of the diet of hunter-gatherer populations found that the dietary provisions of the paleolithic diet had been based on questionable research, and were \"difficult to reconcile with more detailed ethnographic and nutritional studies of hunter-gatherer diet\".Researchers have proposed that cooked starches met the energy demands of an increasing brain size, based on variations in the copy number of genes encoding amylase.   == Health effects == The paleolithic diet is controversial in part because of the exaggerated health claims made for it by its supporters. In general, methodological quality of research into the diet has been poor to moderate.The aspects of the paleolithic diet that result in eating fewer processed foods and less sugar and salt are consistent with mainstream advice about diet. Diets with a paleolithic nutrition pattern have some similarities to traditional ethnic diets such as the Mediterranean diet that have been found to be healthier than the Western diet. Following the paleolithic diet, however, can lead to nutritional deficiencies such as those of vitamin D and calcium, which in turn could lead to compromised bone health; it can also lead to an increased risk of ingesting toxins from high fish consumption.There is some evidence the diet helps achieve weight loss, possibly because of the increased satiety from the foods typically eaten. One trial of obese postmenopausal women found improvements in weight and fat loss after six months, but the benefits had ceased by 24 months; side effects among participants included \"weakness, diarrhea, and headaches\". As with any other diet regime, the paleolithic diet leads to weight loss because of overall decreased caloric intake, rather than a special feature of the diet itself.There is no good evidence that following a paleolithic diet lessens the risk of cardiovascular disease or metabolic syndrome. There is no evidence the paleolithic diet is effective in treating inflammatory bowel disease.The paleolithic diet similar to the Atkins diet encourages the consumption of large amounts of red meat, especially meats high in saturated fat. This has a negative effect on health in the long run as medical studies have shown that it can lead to increased incidence of cardiovascular disease.', '== Genetics == The stated rationale for the paleolithic diet is that human genes of modern times are unchanged from those of 10,000 years ago, and that the diet of that time is therefore the best fit with humans today. Loren Cordain has described the paleo diet as \"the one and only diet that ideally fits our genetic makeup\".The argument is that modern humans have not been able to adapt to the new circumstances. According to Cordain, before the agricultural revolution, hunter-gatherer diets rarely included grains, and obtaining milk from wild animals would have been \"nearly impossible\". Advocates of the diet argue that the increase in diseases of affluence after the dawn of agriculture was caused by these changes in diet, but others have countered that it may be that pre-agricultural hunter-gatherers did not suffer from the diseases of affluence because they did not live long enough to develop them.According to the model from the evolutionary discordance hypothesis, \"many chronic diseases and degenerative conditions evident in modern Western populations have arisen because of a mismatch between Stone Age genes and modern lifestyles.\" Advocates of the modern paleo diet have formed their dietary recommendations based on this hypothesis. They argue that modern humans should follow a diet that is nutritionally closer to that of their Paleolithic ancestors. The evolutionary discordance is incomplete, since it is based mainly on the genetic understanding of the human diet and a unique model of human ancestral diets, without taking into account the flexibility and variability of the human dietary behaviors over time. Studies of a variety of populations around the world show that humans can live healthily with a wide variety of diets and that humans have evolved to be flexible eaters. Lactase persistence, which confers lactose tolerance into adulthood, is an example of how some humans have adapted to the introduction of dairy into their diet. While the introduction of grains, dairy, and legumes during the Neolithic revolution may have had some adverse effects on modern humans, if humans had not been nutritionally adaptable, these technological developments would have been dropped.Since the publication of Eaton and Konner\\'s paper in 1985, analysis of the DNA of primitive human remains has provided evidence that evolving humans were continually adapting to new diets, thus challenging the hypothesis underlying the paleothic diet.', 'Studies of a variety of populations around the world show that humans can live healthily with a wide variety of diets and that humans have evolved to be flexible eaters. Lactase persistence, which confers lactose tolerance into adulthood, is an example of how some humans have adapted to the introduction of dairy into their diet. While the introduction of grains, dairy, and legumes during the Neolithic revolution may have had some adverse effects on modern humans, if humans had not been nutritionally adaptable, these technological developments would have been dropped.Since the publication of Eaton and Konner\\'s paper in 1985, analysis of the DNA of primitive human remains has provided evidence that evolving humans were continually adapting to new diets, thus challenging the hypothesis underlying the paleothic diet. Evolutionary biologist Marlene Zuk writes that the idea that our genetic makeup today matches that of our ancestors is misconceived, and that in debate Cordain was \"taken aback\" when told that 10,000 years was \"plenty of time\" for an evolutionary change in human digestive abilities to have taken place. On this basis Zuk dismisses Cordain\\'s claim that the paleo diet is \"the one and only diet that fits our genetic makeup\".Paleoanthropologist Peter Ungar has written that the paleo diet is a \"myth\", on account both of its invocation of a single suitable diet when in reality humans have always been a \"work in progress\", and because diet has always been varied because humans were spread widely over the planet.Anthropological geneticist Anne C. Stone has said that humans have adapted in the last 10,000 years in response to radical changes in diet. In 2016, she was quoted as saying \"It drives me crazy when Paleo-diet people say that we\\'ve stopped evolving—we haven\\'t\".Melvin Konner has said the challenge to the hypothesis is not greatly significant since the real challenges to human non-adaptation have occurred with the rise of ever-more refined foodstuffs in the last 300 years.   == Environmental impact == A 2019 analysis of diets in the United States ranked consumption of a paleolithic diet as more environmentally harmful than consumption of an omnivorous diet, though not so harmful as a ketogenic diet.Elizabeth Kolbert has written the paleolithic diet\\'s emphasis on meat consumption is a \"disaster\" on account of meat\\'s comparatively high energy production costs.', 'In 2016, she was quoted as saying \"It drives me crazy when Paleo-diet people say that we\\'ve stopped evolving—we haven\\'t\".Melvin Konner has said the challenge to the hypothesis is not greatly significant since the real challenges to human non-adaptation have occurred with the rise of ever-more refined foodstuffs in the last 300 years.   == Environmental impact == A 2019 analysis of diets in the United States ranked consumption of a paleolithic diet as more environmentally harmful than consumption of an omnivorous diet, though not so harmful as a ketogenic diet.Elizabeth Kolbert has written the paleolithic diet\\'s emphasis on meat consumption is a \"disaster\" on account of meat\\'s comparatively high energy production costs.   == Popularity == A lifestyle and ideology have developed around the diet. \"Paleolithic\" products include clothing, smartphone apps, and cookware. Many paleolithic cookery books have been bestsellers.As of 2019 the market for products with the word \"Paleo\" in their name was worth approximately $US500\\u2009million, with strong growth prospects despite pushback from the scientific community. Some products were taking advantage of the trend by touting themselves as \"paleo-approved\" despite having no apparent link to the movement\\'s tenets.Like many other diets, the paleolithic diet is promoted by some by an appeal to nature and a narrative of conspiracy theories about how nutritional research, which does not support the supposed benefits of the paleolithic diet, is controlled by a malign food industry. Paleolithic diet advocate John Durant has blamed suppression of the truth about diet in the United States on \"the vegetarian lobby\".   == See also ==   == Citations ==   == References ==   == Further reading ==   == External links == Human Timeline (Interactive) – Smithsonian, National Museum of Natural History (August 2016).'], 'model': <OpenAIEmbeddingModeModel.TEXT_EMBED_ADA_002: 'text-embedding-ada-002'>, 'encoding_format': 'base64'}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Length', b'66319'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'x-content-type-options', b'nosniff'), (b'x-ratelimit-remaining-requests', b'115'), (b'apim-request-id', b'01f19d39-e633-42b6-acb0-11568be06bf9'), (b'x-ratelimit-remaining-tokens', b'109341'), (b'x-request-id', b'74925b00-0ce2-4d0d-9c6c-6f32f9ddaf21'), (b'x-ms-client-request-id', b'01f19d39-e633-42b6-acb0-11568be06bf9'), (b'x-ms-region', b'East US'), (b'azureml-model-session', b'wd3a5f6e70955-3'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Date', b'Thu, 28 Dec 2023 09:04:27 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> close\n",
      "DEBUG:neo4j:[#D907]  C: GOODBYE\n",
      "DEBUG:neo4j:[#D907]  C: <CLOSE>\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/deployments/gpt-35-turbo-16k/chat/completions', 'files': None, 'json_data': {'messages': [{'role': <MessageRole.USER: 'user'>, 'content': \"A question is provided below. Given the question, extract up to 10 keywords from the text. Focus on extracting the keywords that we can use to best lookup answers to the question. Avoid stopwords.\\n---------------------\\nTell me about the benefits of paleo diet.\\n---------------------\\nProvide keywords in the following comma-separated format: 'KEYWORDS: <keywords>'\\n\"}], 'model': 'gpt-35-turbo-16k', 'stream': False, 'temperature': 0.1}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Cache-Control', b'no-cache, must-revalidate'), (b'Content-Length', b'786'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'apim-request-id', b'035f3598-f3b1-4e83-9f4d-0a202cbd2565'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'x-content-type-options', b'nosniff'), (b'x-ms-region', b'East US'), (b'x-ratelimit-remaining-requests', b'116'), (b'x-ratelimit-remaining-tokens', b'119792'), (b'x-accel-buffering', b'no'), (b'x-request-id', b'a909cc69-3949-4cca-996f-52573ef808fb'), (b'x-ms-client-request-id', b'035f3598-f3b1-4e83-9f4d-0a202cbd2565'), (b'azureml-model-session', b'turbo-0613-bc549a28'), (b'Date', b'Thu, 28 Dec 2023 09:04:28 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN 'MATCH p=(n1:Entity)-[*1..2]->() WHERE n1.id IN $subjs UNWIND relationships(p) AS rel WITH n1.id AS subj, p, apoc.coll.flatten(apoc.coll.toSet(collect([type(rel), endNode(rel).id]))) AS flattened_rels RETURN subj, collect(flattened_rels) AS flattened_rels LIMIT 30' {'subjs': ['diet']} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 1, 'fields': ['subj', 'flattened_rels']}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: RECORD * 1\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA9JA=', 'type': 'r', 't_last': 1, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:llama_index.indices.knowledge_graph.retrievers:rel_map: {'diet': [['IS', 're-imagining of what Paleolithic people ate'], ['IS', '65% plant-based'], ['FORBIDS', 'consumption of all dairy products'], ['CAUSED_BY', 'changes in diet'], ['HAS_ALWAYS_BEEN', 'varied']]}\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN 'MATCH p=(n1:Entity)-[*1..2]->() WHERE n1.id IN $subjs UNWIND relationships(p) AS rel WITH n1.id AS subj, p, apoc.coll.flatten(apoc.coll.toSet(collect([type(rel), endNode(rel).id]))) AS flattened_rels RETURN subj, collect(flattened_rels) AS flattened_rels LIMIT 30' {'subjs': ['benefits']} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 0, 'fields': ['subj', 'flattened_rels']}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA9JA=', 'type': 'r', 't_last': 0, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:llama_index.indices.knowledge_graph.retrievers:rel_map: {}\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN 'MATCH p=(n1:Entity)-[*1..2]->() WHERE n1.id IN $subjs UNWIND relationships(p) AS rel WITH n1.id AS subj, p, apoc.coll.flatten(apoc.coll.toSet(collect([type(rel), endNode(rel).id]))) AS flattened_rels RETURN subj, collect(flattened_rels) AS flattened_rels LIMIT 30' {'subjs': ['paleo']} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 0, 'fields': ['subj', 'flattened_rels']}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA9JA=', 'type': 'r', 't_last': 1, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:llama_index.indices.knowledge_graph.retrievers:rel_map: {}\n",
      "DEBUG:neo4j:[#0000]  _: <POOL> acquire direct connection, access_mode='WRITE', database='neo4j'\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> picked existing connection bolt-78\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> checked re_auth auth=None updated=False force=False\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> handing out existing connection\n",
      "DEBUG:neo4j:[#DA8F]  C: RUN 'MATCH p=(n1:Entity)-[*1..2]->() WHERE n1.id IN $subjs UNWIND relationships(p) AS rel WITH n1.id AS subj, p, apoc.coll.flatten(apoc.coll.toSet(collect([type(rel), endNode(rel).id]))) AS flattened_rels RETURN subj, collect(flattened_rels) AS flattened_rels LIMIT 30' {'subjs': ['paleo diet']} {'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  C: PULL {'n': 1000}\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'t_first': 0, 'fields': ['subj', 'flattened_rels']}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: READY > STREAMING\n",
      "DEBUG:neo4j:[#DA8F]  S: SUCCESS {'bookmark': 'FB:kcwQMyFOofwtTyGEbSgUat+G3skA9JA=', 'type': 'r', 't_last': 1, 'db': 'neo4j'}\n",
      "DEBUG:neo4j:[#DA8F]  _: <CONNECTION> server state: STREAMING > READY\n",
      "DEBUG:neo4j:[#DA8F]  _: <POOL> released bolt-78\n",
      "DEBUG:llama_index.indices.knowledge_graph.retrievers:rel_map: {}\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/embeddings', 'files': None, 'post_parser': <function Embeddings.create.<locals>.parser at 0x14f20e3e0>, 'json_data': {'input': ['Tell me about the benefits of paleo diet.'], 'model': <OpenAIEmbeddingModeModel.TEXT_EMBED_ADA_002: 'text-embedding-ada-002'>, 'encoding_format': 'base64'}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Length', b'8397'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'x-content-type-options', b'nosniff'), (b'x-ratelimit-remaining-requests', b'115'), (b'apim-request-id', b'83644b62-5d9b-443d-a262-065095373344'), (b'x-ratelimit-remaining-tokens', b'109330'), (b'x-request-id', b'e663ac46-94ba-4846-ae75-aa3c02170f7f'), (b'x-ms-client-request-id', b'83644b62-5d9b-443d-a262-065095373344'), (b'x-ms-region', b'East US'), (b'azureml-model-session', b'wd3a5f6e70955-8'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Date', b'Thu, 28 Dec 2023 09:04:28 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-07-01-preview \"200 OK\"\n",
      "DEBUG:llama_index.indices.knowledge_graph.retrievers:Found the following rel_texts+query similarites: [0.8638272561459364, 0.863292342026343, 0.8603669323542859]\n",
      "DEBUG:llama_index.indices.knowledge_graph.retrievers:Found the following top_k rel_texts: [\"['IS', 're-imagining of what Paleolithic people ate']\", \"['IS', '65% plant-based']\", \"['FORBIDS', 'consumption of all dairy products']\", \"['CAUSED_BY', 'changes in diet']\", \"['HAS_ALWAYS_BEEN', 'varied']\"]\n",
      "INFO:llama_index.indices.knowledge_graph.retrievers:> Querying with idx: 16f36b9c-6544-4250-b079-d39dd968b8a2: == Genetics ==\n",
      "The stated rationale for the paleolithic diet is that human ge...\n",
      "INFO:llama_index.indices.knowledge_graph.retrievers:> Querying with idx: 12bfcd97-3d7c-4513-a015-afa741a1ff08: == Foodstuffs ==\n",
      "The basis of the diet is a re-imagining of what Paleolithic ...\n",
      "INFO:llama_index.indices.knowledge_graph.retrievers:> Querying with idx: 5e7a0ec4-cb8b-4075-96bb-1200662a50d2: == Health effects ==\n",
      "The paleolithic diet is controversial in part because of...\n",
      "DEBUG:openai._base_client:Request options: {'method': 'post', 'url': '/deployments/gpt-35-turbo-16k/chat/completions', 'files': None, 'json_data': {'messages': [{'role': <MessageRole.SYSTEM: 'system'>, 'content': \"You are an expert Q&A system that is trusted around the world.\\nAlways answer the query using the provided context information, and not prior knowledge.\\nSome rules to follow:\\n1. Never directly reference the given context in your answer.\\n2. Avoid statements like 'Based on the context, ...' or 'The context information ...' or anything along those lines.\"}, {'role': <MessageRole.USER: 'user'>, 'content': 'Context information from multiple sources is below.\\n---------------------\\n== Genetics ==\\nThe stated rationale for the paleolithic diet is that human genes of modern times are unchanged from those of 10,000 years ago, and that the diet of that time is therefore the best fit with humans today. Loren Cordain has described the paleo diet as \"the one and only diet that ideally fits our genetic makeup\".The argument is that modern humans have not been able to adapt to the new circumstances. According to Cordain, before the agricultural revolution, hunter-gatherer diets rarely included grains, and obtaining milk from wild animals would have been \"nearly impossible\". Advocates of the diet argue that the increase in diseases of affluence after the dawn of agriculture was caused by these changes in diet, but others have countered that it may be that pre-agricultural hunter-gatherers did not suffer from the diseases of affluence because they did not live long enough to develop them.According to the model from the evolutionary discordance hypothesis, \"many chronic diseases and degenerative conditions evident in modern Western populations have arisen because of a mismatch between Stone Age genes and modern lifestyles.\" Advocates of the modern paleo diet have formed their dietary recommendations based on this hypothesis. They argue that modern humans should follow a diet that is nutritionally closer to that of their Paleolithic ancestors.\\nThe evolutionary discordance is incomplete, since it is based mainly on the genetic understanding of the human diet and a unique model of human ancestral diets, without taking into account the flexibility and variability of the human dietary behaviors over time. Studies of a variety of populations around the world show that humans can live healthily with a wide variety of diets and that humans have evolved to be flexible eaters. Lactase persistence, which confers lactose tolerance into adulthood, is an example of how some humans have adapted to the introduction of dairy into their diet. While the introduction of grains, dairy, and legumes during the Neolithic revolution may have had some adverse effects on modern humans, if humans had not been nutritionally adaptable, these technological developments would have been dropped.Since the publication of Eaton and Konner\\'s paper in 1985, analysis of the DNA of primitive human remains has provided evidence that evolving humans were continually adapting to new diets, thus challenging the hypothesis underlying the paleothic diet. Evolutionary biologist Marlene Zuk writes that the idea that our genetic makeup today matches that of our ancestors is misconceived, and that in debate Cordain was \"taken aback\" when told that 10,000 years was \"plenty of time\" for an evolutionary change in human digestive abilities to have taken place. On this basis Zuk dismisses Cordain\\'s claim that the paleo diet is \"the one and only diet that fits our genetic makeup\".Paleoanthropologist Peter Ungar has written that the paleo diet is a \"myth\", on account both of its invocation of a single suitable diet when in reality humans have always been a \"work in progress\", and because diet has always been varied because humans were spread widely over the planet.Anthropological geneticist Anne C. Stone has said that humans have adapted in the last 10,000 years in response to radical changes in diet. In 2016, she was quoted as saying \"It drives me crazy when Paleo-diet people say that we\\'ve stopped evolving—we haven\\'t\".Melvin Konner has said the challenge to the hypothesis is not greatly significant since the real challenges to human non-adaptation have occurred with the rise of ever-more refined foodstuffs in the last 300 years.\\n\\n\\n== Environmental impact ==\\nA 2019 analysis of diets in the United States ranked consumption of a paleolithic diet as more environmentally harmful than consumption of an omnivorous diet, though not so harmful as a ketogenic diet.Elizabeth Kolbert has written the paleolithic diet\\'s emphasis on meat consumption is a \"disaster\" on account of meat\\'s comparatively high energy production costs.\\n\\n\\n== Popularity ==\\nA lifestyle and ideology have developed around the diet. \"Paleolithic\" products include clothing, smartphone apps, and cookware. Many paleolithic cookery books have been bestsellers.As of 2019 the market for products with the word \"Paleo\" in their name was worth approximately $US500\\u2009million, with strong growth prospects despite pushback from the scientific community. Some products were taking advantage of the trend by touting themselves as \"paleo-approved\" despite having no apparent link to the movement\\'s tenets.Like many other diets, the paleolithic diet is promoted by some by an appeal to nature and a narrative of conspiracy theories about how nutritional research, which does not support the supposed benefits of the paleolithic diet, is controlled by a malign food industry. Paleolithic diet advocate John Durant has blamed suppression of the truth about diet in the United States on \"the vegetarian lobby\".\\n\\n\\n== See also ==\\n\\n\\n== Citations ==\\n\\n\\n== References ==\\n\\n\\n== Further reading ==\\n\\n== Foodstuffs ==\\nThe basis of the diet is a re-imagining of what Paleolithic people ate, and different proponents recommend different diet compositions. Eaton and Konner, for example, wrote a 1988 book The Paleolithic Prescription with Marjorie Shostak, and it described a diet that is 65% plant-based. This is not typical of more recently devised paleo diets; Loren Cordain\\'s – probably the most popular – instead emphasizes animal products and avoidance of processed food. Diet advocates concede the modern paleolithic diet cannot be a faithful recreation of what paleolithic people ate, and instead aim to \"translate\" that into a modern context, avoiding such likely historical practices as cannibalism.Foodstuffs that have been described as permissible include:\\n\\n\"vegetables, fruits, nuts, roots, meat, and organ meats\";\\n\"vegetables (including root vegetables), fruit (including fruit oils, e.g., olive oil, coconut oil, and palm oil), nuts, fish, meat, and eggs, and it excluded dairy, grain-based foods, legumes, extra sugar, and nutritional products of industry (including refined fats and refined carbohydrates)\"; and\\n\"avoids processed foods, and emphasizes eating vegetables, fruits, nuts and seeds, eggs, and lean meats\".The diet forbids the consumption of all dairy products. This is because milking did not exist until animals were domesticated after the Paleolithic era.\\n\\n\\n=== Ancestral diet ===\\n\\nAdopting the Paleolithic diet assumes that modern humans can reproduce the hunter-gatherer diet. Molecular biologist Marion Nestle argues that \"knowledge of the relative proportions of animal and plant foods in the diets of early humans is circumstantial, incomplete, and debatable and that there are insufficient data to identify the composition of a genetically determined optimal diet. The evidence related to Paleolithic diets is best interpreted as supporting the idea that diets based largely on plant foods promote health and longevity, at least under conditions of food abundance and physical activity.\" Ideas about Paleolithic diet and nutrition are at best hypothetical.The data for Cordain\\'s book only came from six contemporary hunter-gatherer groups, mainly living in marginal habitats. One of the studies was on the !Kung, whose diet was recorded for a single month, and one was on the Inuit. Due to these limitations, the book has been criticized as painting an incomplete picture of the diets of Paleolithic humans. It has been noted that the rationale for the diet does not adequately account for the fact that, due to the pressures of artificial selection, most modern domesticated plants and animals differ drastically from their Paleolithic ancestors; likewise, their nutritional profiles are very different from their ancient counterparts. For example, wild almonds produce potentially fatal levels of cyanide, but this trait has been bred out of domesticated varieties using artificial selection. Many vegetables, such as broccoli, did not exist in the Paleolithic period; broccoli, cabbage, cauliflower, and kale are modern cultivars of the ancient species Brassica oleracea.Trying to devise an ideal diet by studying contemporary hunter-gatherers is difficult because of the great disparities that exist; for example, the animal-derived calorie percentage ranges from 25% for the Gwi people of southern Africa to 99% for the Alaskan Nunamiut. Descendants of populations with different diets have different genetic adaptations to those diets, such as the ability to digest sugars from starchy foods. Modern hunter-gatherers tend to exercise considerably more than modern office workers, protecting them from heart disease and diabetes, though highly processed modern foods also contribute to diabetes when those populations move into cities.A 2018 review of the diet of hunter-gatherer populations found that the dietary provisions of the paleolithic diet had been based on questionable research, and were \"difficult to reconcile with more detailed ethnographic and nutritional studies of hunter-gatherer diet\".Researchers have proposed that cooked starches met the energy demands of an increasing brain size, based on variations in the copy number of genes encoding amylase.\\n\\n== Health effects ==\\nThe paleolithic diet is controversial in part because of the exaggerated health claims made for it by its supporters. In general, methodological quality of research into the diet has been poor to moderate.The aspects of the paleolithic diet that result in eating fewer processed foods and less sugar and salt are consistent with mainstream advice about diet. Diets with a paleolithic nutrition pattern have some similarities to traditional ethnic diets such as the Mediterranean diet that have been found to be healthier than the Western diet. Following the paleolithic diet, however, can lead to nutritional deficiencies such as those of vitamin D and calcium, which in turn could lead to compromised bone health; it can also lead to an increased risk of ingesting toxins from high fish consumption.There is some evidence the diet helps achieve weight loss, possibly because of the increased satiety from the foods typically eaten. One trial of obese postmenopausal women found improvements in weight and fat loss after six months, but the benefits had ceased by 24 months; side effects among participants included \"weakness, diarrhea, and headaches\". As with any other diet regime, the paleolithic diet leads to weight loss because of overall decreased caloric intake, rather than a special feature of the diet itself.There is no good evidence that following a paleolithic diet lessens the risk of cardiovascular disease or metabolic syndrome. There is no evidence the paleolithic diet is effective in treating inflammatory bowel disease.The paleolithic diet similar to the Atkins diet encourages the consumption of large amounts of red meat, especially meats high in saturated fat. This has a negative effect on health in the long run as medical studies have shown that it can lead to increased incidence of cardiovascular disease.\\n\\nkg_schema: {\\'schema\\': \"Node properties are the following:\\\\nEntity {id: STRING},Product {unitPrice: FLOAT, productName: STRING, productID: STRING, unitsOnOrder: INTEGER, supplierID: STRING, categoryID: STRING, discontinued: BOOLEAN, unitsInStock: INTEGER, quantityPerUnit: STRING, reorderLevel: INTEGER},Category {picture: STRING, categoryID: STRING, categoryName: STRING, description: STRING},Supplier {address: STRING, companyName: STRING, region: STRING, contactName: STRING, fax: STRING, phone: STRING, postalCode: STRING, contactTitle: STRING, country: STRING, supplierID: STRING, city: STRING, homePage: STRING},Customer {address: STRING, companyName: STRING, fax: STRING, region: STRING, customerID: STRING, country: STRING, contactName: STRING, contactTitle: STRING, postalCode: STRING, city: STRING, phone: STRING},Order {requiredDate: STRING, shippedDate: STRING, shipName: STRING, shipPostalCode: STRING, shipCity: STRING, shipCountry: STRING, shipAddress: STRING, employeeID: STRING, orderDate: STRING, customerID: STRING, shipVia: STRING, orderID: STRING, shipRegion: STRING, freight: STRING}\\\\nRelationship properties are the following:\\\\nORDERS {unitPrice: STRING, orderID: STRING, quantity: INTEGER, discount: STRING, productID: STRING}\\\\nThe relationships are the following:\\\\n(:Entity)-[:IS]->(:Entity),(:Entity)-[:POPULARIZED]->(:Entity),(:Entity)-[:DESCRIBED_AS]->(:Entity),(:Entity)-[:WORTH]->(:Entity),(:Entity)-[:REMAINED_ESSENTIALLY_UNCHANGED]->(:Entity),(:Entity)-[:HUMAN_DIETS]->(:Entity),(:Entity)-[:CAUSED_BY]->(:Entity),(:Entity)-[:FORBIDS]->(:Entity),(:Entity)-[:HAS_ALWAYS_BEEN]->(:Entity),(:Entity)-[:RECOMMEND]->(:Entity),(:Entity)-[:WROTE]->(:Entity),(:Entity)-[:DESCRIBED]->(:Entity),(:Entity)-[:AVOIDANCE_OF]->(:Entity),(:Entity)-[:EMPHASIZES]->(:Entity),(:Entity)-[:AIM_TO]->(:Entity),(:Entity)-[:UNDERMINES]->(:Entity),(:Entity)-[:LEAD_TO]->(:Entity),(:Entity)-[:HELPS_ACHIEVE]->(:Entity),(:Entity)-[:PROMOTES]->(:Entity),(:Entity)-[:IS_CONTROVERSIAL_IN_PART_BECAUSE_OF]->(:Entity),(:Entity)-[:LEADS_TO]->(:Entity),(:Entity)-[:IS_CONTROVERSIAL_IN]->(:Entity),(:Entity)-[:HAS_BEEN_POOR_TO_MODERATE]->(:Entity),(:Entity)-[:RESULT_IN]->(:Entity),(:Entity)-[:CONSISTENT_WITH]->(:Entity),(:Entity)-[:HAVE_SIMILARITIES_TO]->(:Entity),(:Entity)-[:HAVE_BEEN_FOUND_TO_BE_HEALTHIER_THAN]->(:Entity),(:Entity)-[:CAN_LEAD_TO]->(:Entity),(:Entity)-[:RARELY_INCLUDED]->(:Entity),(:Entity)-[:WOULD_HAVE_BEEN]->(:Entity),(:Entity)-[:DID_NOT_SUFFER_FROM]->(:Entity),(:Entity)-[:MANY_CHRONIC_DISEASES_AND_DEGENERATIVE_CONDITIONS_EVIDENT_IN_MODERN_WESTERN_POPULATIONS_HAVE_ARISEN_BECAUSE_OF]->(:Entity),(:Entity)-[:MANY_CHRONIC_DISEASES_AND_DEGENERATIVE_CONDITIONS]->(:Entity),(:Entity)-[:MANY_CHRONIC_DISEASES_AND_DEGENERATIVE_CONDITIONS_EVIDENT_IN]->(:Entity),(:Entity)-[:FORMED_THEIR_DIETARY_RECOMMENDATIONS_BASED_ON]->(:Entity),(:Entity)-[:FORMED_THEIR_DIETARY_RECOMMENDATIONS]->(:Entity),(:Entity)-[:HAVE_ALWAYS_BEEN]->(:Entity),(:Entity)-[:HAVE_NOT_BEEN]->(:Entity),(:Entity)-[:CAN_LIVE_HEALTHILY_WITH]->(:Entity),(:Entity)-[:CAN_LIVE_HEALTHILY]->(:Entity),(:Entity)-[:HAVE_EVOLVED_TO_BE]->(:Entity),(:Entity)-[:HAS]->(:Entity),(:Entity)-[:PUBLISHED_IN]->(:Entity),(:Entity)-[:PUBLISHED_BY]->(:Entity),(:Entity)-[:BELONGS_TO]->(:Entity),(:Entity)-[:HAVE_NOT_BEEN_ABLE_TO_ADAPT_TO]->(:Entity),(:Entity)-[:ARGUE]->(:Entity),(:Entity)-[:ARGUE_THAT]->(:Entity),(:Entity)-[:CONFERS_LACTOSE_TOLERANCE_INTO]->(:Entity),(:Entity)-[:PROVIDED_EVIDENCE_THAT_EVOLVING_HUMANS_WERE_CONTINUALLY_ADAPTING_TO]->(:Entity),(:Entity)-[:DISMISSES]->(:Entity),(:Entity)-[:HAS_WRITTEN_THAT_THE_PALEO_DIET_IS]->(:Entity),(:Entity)-[:RANKED_CONSUMPTION_OF_A_PALEOLITHIC_DIET_AS]->(:Entity),(:Entity)-[:HAS_WRITTEN_THE_PALEOLITHIC_DIET\\'S_EMPHASIS_ON_MEAT_CONSUMPTION_IS]->(:Entity),(:Entity)-[:HAVE_DEVELOPED_AROUND]->(:Entity),(:Entity)-[:PUSHBACK_FROM]->(:Entity),(:Entity)-[:DOES_NOT_SUPPORT]->(:Entity),(:Entity)-[:HAS_BLAMED_SUPPRESSION_OF_THE_TRUTH_ABOUT_DIET_IN_THE_UNITED_STATES_ON]->(:Entity),(:Product)-[:PART_OF]->(:Category),(:Supplier)-[:SUPPLIES]->(:Product),(:Customer)-[:PURCHASED]->(:Order),(:Order)-[:ORDERS]->(:Product)\"}\\n\\nThe following are knowledge sequence in max depth 2 in the form of directed graph like:\\n`subject -[predicate]->, object, <-[predicate_next_hop]-, object_next_hop ...`\\n[\\'IS\\', \\'re-imagining of what Paleolithic people ate\\']\\n(\\'paleolithic diet\\', \\'helps achieve\\', \\'weight loss\\')\\n(\\'paleo diets\\', \\'avoidance of\\', \\'processed food\\')\\n[\\'FORBIDS\\', \\'consumption of all dairy products\\']\\n(\\'Loren Cordain\\', \\'described as\\', \\'paleo diet\\')\\n[\\'CAUSED_BY\\', \\'changes in diet\\']\\n[\\'HAS_ALWAYS_BEEN\\', \\'varied\\']\\n[\\'IS\\', \\'65% plant-based\\']\\n---------------------\\nGiven the information from multiple sources and not prior knowledge, answer the query.\\nQuery: Tell me about the benefits of paleo diet.\\nAnswer: '}], 'model': 'gpt-35-turbo-16k', 'stream': False, 'temperature': 0.1}, 'headers': {'api-key': '5f98852154cf442fbefbb5f8be916294'}}\n",
      "DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_headers.complete\n",
      "DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:send_request_body.complete\n",
      "DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Cache-Control', b'no-cache, must-revalidate'), (b'Content-Length', b'1681'), (b'Content-Type', b'application/json'), (b'access-control-allow-origin', b'*'), (b'apim-request-id', b'5eefbc67-72c7-4006-86cd-3347764a7213'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'x-content-type-options', b'nosniff'), (b'x-ms-region', b'East US'), (b'x-ratelimit-remaining-requests', b'116'), (b'x-ratelimit-remaining-tokens', b'119776'), (b'x-accel-buffering', b'no'), (b'x-request-id', b'd03bf95c-1c7b-4edd-b783-cd5d83dfba38'), (b'x-ms-client-request-id', b'5eefbc67-72c7-4006-86cd-3347764a7213'), (b'azureml-model-session', b'turbo-0613-ea3060f9'), (b'Date', b'Thu, 28 Dec 2023 09:04:31 GMT')])\n",
      "INFO:httpx:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"HTTP/1.1 200 OK\"\n",
      "DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>\n",
      "DEBUG:httpcore.http11:receive_response_body.complete\n",
      "DEBUG:httpcore.http11:response_closed.started\n",
      "DEBUG:httpcore.http11:response_closed.complete\n",
      "DEBUG:openai._base_client:HTTP Request: POST https://firstaiproject.openai.azure.com//openai/deployments/gpt-35-turbo-16k/chat/completions?api-version=2023-07-01-preview \"200 OK\"\n"
     ]
    },
    {
     "data": {
      "text/markdown": [
       "<b>The paleo diet is believed to have several benefits. Advocates of the diet argue that it is nutritionally closer to the diet of our Paleolithic ancestors, which they believe is the best fit for our genetic makeup. They claim that following a paleo diet can help prevent or reduce the risk of chronic diseases and degenerative conditions that are common in modern Western populations. The diet emphasizes the consumption of whole, unprocessed foods such as vegetables, fruits, nuts, seeds, lean meats, and fish, while avoiding processed foods, grains, legumes, and dairy products. Some studies suggest that the paleo diet may help with weight loss, as it promotes the consumption of satiating foods and reduces overall caloric intake. However, it is important to note that the health benefits of the paleo diet are still a topic of debate, and more research is needed to fully understand its long-term effects on health.</b>"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "neo4j_pack = Neo4jQueryEnginePack(\n",
    "  username = username,\n",
    "  password = password,\n",
    "  url = url,\n",
    "  database = database,\n",
    "  docs = documents,\n",
    "  query_engine_type = Neo4jQueryEngineType.KG_HYBRID\n",
    ")\n",
    "\n",
    "response = neo4j_pack.run(\"Tell me about the benefits of paleo diet.\")\n",
    "display(Markdown(f\"<b>{response}</b>\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "XoK0BiKZDMaJ"
   },
   "source": [
    "## 知识图谱查询策略比较\n",
    "\n",
    "下表列出了7种查询引擎的详细信息，以及基于与NebulaGraph和LlamaIndex的实验得出的它们的优缺点，这在博客文章 [利用 LlamaIndex 浏览知识图谱的 7 种查询策略](https://www.toutiao.com/article/7317169514767008271/)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "DVr0XiFBGMY-"
   },
   "source": [
    "![知识图谱查询策略比较](https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/ffa837ee967d46f9baaf28784b7ec0c0~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1704356130&x-signature=GXA885tOjv39mCKu1oftcWCcWtA%3D)"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "machine_shape": "hm",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
